/* 한글은 한글자가 2바이트로 처리되므로 2바이트를 분리해서 출력하면 안된다 */
#include <stdio.h>
#include <string.h>
/* 한글과 영문비교 */
int main(void) {
char *eng = "Hello World";
char *kor = "감사합니다";
char ch;
int i;
/* 영어문자열을 한문자씩 출력하는 경우 */
for(i=0;(ch=eng[i])!=NULL;i++) {
printf("%c", ch); // Hello World
}
printf("\n");
/* 한글문자열을 한문자씩 출력하는 경우 */
for(i=0;(ch=kor[i])!=NULL;i++) {
printf("%c", ch); // 감사합니다
}
printf("\n");
/* 영어문자열을 한문자씩 출력하되 문자 다음에 공백문자를 추가하는 경우 */
for(i=0;(ch=eng[i])!=NULL;i++) {
printf("%c ", ch); // H e l l o W o r l d
}
printf("\n");
/* 한글문자열을 한문자씩 출력하되 문자 다음에 공백문자를 추가하는 경우 */
for(i=0;(ch=kor[i])!=NULL;i++) {
printf("%c ", ch); // ?????????? --> 10개의 물음표 출력됨(문자로써 취급되지 않음)
}
printf("\n");
/* 위의 테스트에서 알 수 있듯이 한글은 1자가 2바이트로 구성되어 있기 때문에
* 한글에 해당하는 비트열들을 분리해서 출력하면 안된다는 것이다.
* 즉, 아래처럼 한글 한글자에 해당하는 2바이트는 연속적으로 출력해야만 제대로 한글로 나타난다.
*/
printf("%c%c", kor[0],kor[1]); // '감' 출력됨
printf("\n");
// 혹은 아래처럼....
printf("%c", kor[2]);
printf("%c", kor[3]); // '사' 출력됨
printf("\n");
/* 예를 들어, 한글 문자열 포인터를 이용하여 '합' 를 출력하려면..... */
printf("%c%c", kor[4],kor[5]);
printf("\n");
}