|
nassol 님이 쓰신 글 :
: 구조체로 파일에다 저장하려고 하거든요.
:
: struct MyStruct
: {
: String String1;
: String String2;
: };
:
: MyStruct Struct;
: memset(&Struct, NULL, sizeof(MyStruct));
:
: MyStruct.String1 = "String1";
: MyStruct.String2 = "String2";
:
: int Handle = FileOpen(FileName, fmOpenWrite);
: FileSeek(Handle, 0,2);
: FileWrite(Handle, &Struct, sizeof(MyStruct));
: FileClose(Handle);
:
: 이렇게 해서 파일에다가 기록해주었구요, 구조체 정보를 만들때마다
: 파일 끝에다가 계속 기록해주었거든요.
:
: 그리고 나중에 구조체에다가 읽어들여서 여러 가지로 데이터를 사용하려고 하거든요.
: 근데, 프로그램을 한번 처음 실행시켜서, 이것저것한다음에 정보를 구조체에 담아서
: 파일에 기록을 하고, 필요하면 다시 읽어들이는데,
:
: 이상한 것은 프로그램을 실행시키자마자 이 작업을 하면 제대로 되는데,
: 프로그램을 다시 실행시키고, 파일에서 읽어들이려고 하면, out of memory에러 또는
: 제대로 정보를 못 읽어들이더라고요.. 이게 어떤 종류의 문제인지 잘 모르겠어요.
:
: 아예 기록과 읽는게 안되면 모르겠는데, 한번은 되니깐. 더 이상하네요.
: 혹시 뭐가 문제인지 아시면 답변해주세요.
:
: 근데 제가 질문해놓고도, 위에 거루 뭐가 문제인지 알 수가 없는 거 같네요 --+
안녕하십니까?
한꼬맹이 입니다.
제가 보기엔 눈에 먼저 들어오는 오류가 FileWrite()부분인데...
이놈의 마지막 인자에 기록할 데이터의 길이를 넣는데 구조체에다가 안시스트링을
선언해 놓았기 때문에 실제 데이터의 길이가 구해지는 것이아니라 안시스트링형크기인
4바이트반 구해지므로 실제 데이터의 길이가 구해지질 않습니다.
그래서 기록할때 실제 데이터길이만큼 기록되지 않습니다...
그럼 참고하시길....
|