c++에서 구조체를 이용해 바이너리 파일을 읽고 쓰는 문제
글쓴이: skek2875 / 작성시간: 수, 2018/01/17 - 6:13오후
typedef struct { int kor; int math; int eng; CString name; } STUDENT; void CProjectDlg::OnBnClickedSave() { CString strSavePath = "file.bin"; FILE* fout = fopen(strSavePath, "wb+"); if( fout == NULL ) return; STUDENT student; student.kor = 100; student.math = 100; student.eng = 100; student.name = "Nara"; fwrite(&student, sizeof(STUDENT), 1, fout); fclose(fout); } void CProjectDlg::OnBnClickedLoad() { CString strLoadPath = "file.bin"; FILE* fin = fopen(strLoadPath, "rb"); if( fin == NULL ) return; STUDENT student; fread(&student, sizeof(STUDENT), 1, fin); fclose(fin); }
프로그램을 하나 만들고 있는데 막히는 부분이 있어서 질문드려요.
제가 궁금한건 바이너리 파일 Load쪽입니다.
fread를 통해서 student 구조체에 값을 저장을 하면 정수형 변수들은 제대로 read된 반면,
CString형 변수인 name은 위의 소스 코드에서 적은 "Nara"가 아닌 이상한 값이 read됩니다.
CString형 변수 대신 char형 배열을 사용했을 때는 제대로 "Nara"가 읽히는데
CString형의 값은 왜 제대로 read가 안되는 걸까요? CString형을 사용할 수 있는 방법은 없을까요?
Forums:
CString 내부에 단순히 char만 들어가 있는
CString 내부에 단순히 char만 들어가 있는 게 아니기 때문입니다. https://stackoverflow.com/questions/146452/what-are-pod-types-in-c
CString을 char *로 변환해서 파일에 저장하세요.
문제 해결 됐습니다 감사합니다!
문제 해결 됐습니다 감사합니다!
댓글 달기