c++에서 은는이가 처리하려고 한글 문자배열중에 끝자리만 가져오려고 함
아래 함수를 만들었는데 영어는 끝자리 인식 잘 되는데 한글은 공백으로 나오거나 물음표로 나오는데
이거 왜이런거냐
char ReturnEnd(char* buf) { //문자열이 마지막 글자를 반환하는 함수
int i = 0;
while (buf[i]) {//buf[i]가 널문자가 아니면 반복.
i++;
}
return buf[i - 1];
}
printf("%c", ReturnEnd("test")); //정상적으로 인식
printf("%c", ReturnEnd("테스트")); // 공백
영문 ascii는 1바이트고, 한글은 2바이트니까 ㅇㅅㅇㅋ
ㅇㅇ그래서 ReturnEnd 함수 return buf[i - 2];해도 뒤에서 2번째 코드만 가져와서 똑같이 물음표 아니면 공백으로 나옴;;
char는 1바이트니까 한글 표현에 부족하고 굳이 저거로 하려면 char*로 2바이트 문자열로 읽으면 됨
함수를 char ReturnEnd(char* buf)에서 char* ReturnEnd(char* buf)로 바꿔도 똑같이 ?로 뜨는데..?
문자열 길이 찍어봐 ㅇㅅㅇㅋ
char가 아니라 wchar 같은 2바이트 문자를 써야함
해당 댓글은 삭제되었습니다.
ㅇㅇ; 유니코드로 쓰려면 어떻게 해야한다는거지?