[C++] 문자열이 깨지는데 어떻게 해야되죠?


(LoLB) #1
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;

#pragma pack(1)
typedef struct AAA
{
	int num1;
	int num2;
	char name[40];
} AAA;
#pragma pack()

int main()
{
	AAA aaa;
	
	aaa.num1 = 20;
	aaa.num2 = 50;
	strcpy(aaa.name, "김철수");
	
	FILE * file = fopen("test1.bin", "wb");
	
	fwrite(&aaa, sizeof(aaa), 1, file);
	
	fclose(file);
	
	file = fopen("test1.bin", "rb");
	
	AAA aab;
	
	fread(&aab, sizeof(aab), 1, file);
	
	cout << "name: " << aab.name << endl;
	cout << aab.num1 << endl;
	cout << aab.num2 << endl;
	
	return 0;
}

name에 영어를 넣으면 문제가 없는데 한글을 넣으니 !쑯쉛?? 같은 외계어가 튀어나옵니다. 어떻게 처리해야되나요?


(L) #2

문자 코드가 달라서 그렇습니다.
코드를 보시면 ASCII로 저장하고 있지만, 윈도우 한국어 로케일은 기본적으로 CP949를 사용하고 있어서 생기는 차이입니다.


(L) #3

요걸 참고하세요


(프로책팔이) #4

은근히 짜증나는 문제죠…


(codesafer) #5

ㅋㅋ 제페사이트.


(Deneb) #6

아 빵터졌네요 ㅋㅋ


(프로책팔이) #7

머가요?


(Deneb) #8

코톡 이전에 코드인사이드라고 다음 카페가 있었는데,

거기 C++ 고수 분 중에 제페님이라고 있었습니다.

L님이 올리신 블로그 주인장도 제페님인 것 같아 무의식적으로 빵터졌다고 썼네요 ㅋㅋ


(L) #9

제페님 블로그에 유익한 볼 거리가 많아유