본문 바로가기

C-Language/wchar_t , why ?

wchar_t, why ?

wchar_t 자료형의 필요성 테스트

#include <stdio.h>
#include <string.h>
#include <wchar.h>
#include <locale.h>

/* wchar_t 자료형의 필요성 */

int main(void) {
 char *sample = "Hello World";    // 영문자만 포함된 문자열
 char *str = "C 언어 String 분석";   // 영문, 한글 혼재된 문자열
 wchar_t *wstr = L"자료형 wchar_t의 필요성"; // 모든 문자를 2바이트로 저장함

 wchar_t wch;
 int i;
 char ch;

 setlocale(LC_ALL, "korean");

 /* 위의 문자열 중 영문(sample)을 가로가 아닌 세로로 출력해 본다면.....? */
 for(i=0;(ch=sample[i])!=NULL;i++) {
  printf("%c\n", ch); // 문자가 수직으로 제대로 출력됨
 }
 printf("\n");

 /* 위의 문자열 중 영문,한글 혼재된 문자열(str)을 가로가 아닌 세로로 출력해 본다면.....? */
 for(i=0;(ch=str[i])!=NULL;i++) {
  printf("%c\n", ch); // 영문자는 무사하나 한글은 ? 으로 나타남, 2바이트 문자가 각바이트로 분리되었기 때문...
 }
 printf("\n");

 /* 모든 문자를 2바이트로 저장하는 wchar_t 형을 사용하면 한글, 영문 모두 무사함 */
 for(i=0;(wch=wstr[i])!=NULL;i++) {
  wprintf(L"%c\n", wch);
 }
 printf("\n");
}