흐 그렇군요 근데 배열크기가 변해서 배열을 직접적으로 써줄 수가 없는데 어떻게 해야하져?
저렇게 해놓고
sExt = new char[크키가변하는 변수]; 이렇게 사용했는데
박지훈.임프 님이 쓰신 글 :
: 역시 멤버에 문제가 있네요. char *sExt 이 멤버는 스트링 자체가 아니라 스트링이 있는 메모리 위치를 가리키는 그냥 포인터일 뿐이기 때문에, 이 구조체를 그대로 파일스트림에 쓰면 4바이트 주소만을 쓸 뿐이죠(물론 32비트일 경우). 이 멤버가 제대로 기록되려면 char 배열을 쓰든지, 아니면 구조체를 통째로 써넣는 대신 멤버별로 각각 써넣든지 해야 하겠지요.
:
:
: 축구 님이 쓰신 글 :
: :
: : class t_FileInfo
: : {
: : public :
: : char sExtLength;
: : char *sExt;
: : };
: :
: : 이렇게 했어요
: :
: :
: : 박지훈.임프 님이 쓰신 글 :
: : : 구조체의 내용을 보여주시지요. 구조체 멤버들에 원인이 있을 수도.
: : : 예를 들어 구조체 내에 AnsiString이나 UnicodeString이 있다든지요.
: : : 아니면 다른 OS에서 쓴 파일을 읽어오는데 바이트 바운더리 얼라인이 다른 경우일 수도 있겠네요.
: : :
: : :
: : : 축구 님이 쓰신 글 :
: : : : FileStream으로 읽고 쓰는데요. 이건 깨져서 저장되는데 이건 정상 이잖아요.
: : : :
: : : : 구조체에 값을 넣고 파일로 저장을 했는데 구조체 크기만큼
: : : :
: : : : 근데 읽어올때 구조체 만큼 읽어오는데 왜 엉뚱한 값이 들어올까요.
: : : :
: : : : pLoadFileStream->Read(&tFileInfo, sizeof(t_FileInfo));
|