C에서 한글문자열 처리중에 한글이 깨집니다.

익명 사용자의 이미지

유닉스 솔라리스에서 ..
한글 문자열을 char 형 배열에 담아 처리하는데.

시행소\274
와 같이 깨지는 현상이 발생하는데..
어떤경우는 안깨지고
어떤 경우는 깨지는데

원인은 어디에 있을까요?
꼭 마지막 글자에서 깨지는 경우가 가끔씩 발생합니다.

익명 사용자의 이미지

char형 배열을
2의 배수로 선언해서 해보세요..
한글은 2바이트니까,
홀수로 선언했을 경우
끝의 글자가 1바이트로 되서
깨지겠죠..

익명 사용자의 이미지

혹시 isalpha 나 isspace등 is계열의 함수를 쓰지 않으시는지요?

그렇다면 함수대입시 꼭 (int) 형으로 casting을 하셔야 됩니다.
man페이지를 보시면 대입형이 int로 되어있음..
그냥 char로 선언해서 쓰면 한글영역은 7bit를 벗어나기 때문에
음의 엉뚱한 값이 들어가게 됩니다. linux에서는 안그런데
solaris에서는 그렇더군요.
unsigned char 형으로 선언하면 꼭 (int)로 casting 할 필요는
없을것 같은데 만일에 대비해서 꼭 int로 casting 잊지마세요.