우선 다음은 ms949 인코딩으로 저장한 C 소스이다.

* 소스 파일명: hello.c

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

int main()
{
    printf("Hello, 안녕하세요?\n");
    printf("strlen(\"Hello, 안녕하세요?\\n\") = %d\n", strlen("Hello, 안녕하세요?\n"));

 return 0;
}

* 컴파일

> gcc -o hello hello.c

*

 실행

> hello

Hello, 안녕하세요?
strlen("Hello, 안녕하세요?\n") = 19

 

다음은 utf-8 인코딩으로 저장한 C 소스이다.

* 소스 파일명: hello2.c

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

#define wstrlen wcslen

int main()
{
    setlocale(LC_ALL,"");

    printf("Using strlen():\n");
    printf("Hello, 안녕하세요?\n");
    printf("strlen(\"Hello, 안녕하세요?\\n\") = %d\n", strlen("Hello, 안녕하세요?\n"));

    wprintf(L"Using wcslen():\n");
 wprintf(L"Hello, 안녕하세요?\n");
    wprintf(L"wstrlen(\"Hello, 안녕하세요?\\n\") = %d\n", wstrlen(L"Hello, 안녕하세요?\n"));

 return 0;
}

* 컴파일

> gcc -o hello2 hello2.c

* 실행

> hello2

Using strlen():
Hello, ?덈뀞?섏꽭??
strlen("Hello, ?덈뀞?섏꽭??\n") = 24
Using wcslen():
Hello, 안녕하세요?
wstrlen("Hello, 안녕하세요?\n") = 14

 

다음도 utf-8 인코딩으로 저장한 C 소스이다.

* 소스 파일명: hello3.c

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

#define wstrlen wcslen

int main()
{
 char as[] = "Hello, 안녕하세요?";
 wchar_t bs[] = L"Hello, 안녕하세요?";

 setlocale(LC_ALL,"");

    printf("Using strlen():\n");
    printf("Hello, 안녕하세요?\n");
    printf("strlen(\"Hello, 안녕하세요?\\n\") = %d\n", strlen("Hello, 안녕하세요?\n"));
    printf("strlen(\"%s\") = %d\n", as, strlen(as));
    printf("\n");

    wprintf(L"Using wcslen():\n");
 wprintf(L"Hello, 안녕하세요?\n");
    wprintf(L"wstrlen(\"Hello, 안녕하세요?\\n\") = %d\n", wstrlen(L"Hello, 안녕하세요?\n"));
    wprintf(L"wstrlen(\"%s\") = %d\n", bs, wstrlen(bs));

 return 0;
}

* 컴파일

> gcc -o hello3 hello3.c

* 실행

> hello3

Using strlen():
Hello, ?덈뀞?섏꽭??
strlen("Hello, ?덈뀞?섏꽭??\n") = 24
strlen("Hello, ?덈뀞?섏꽭??") = 23

Using wcslen():
Hello, 안녕하세요?
wstrlen("Hello, 안녕하세요?\n") = 14
wstrlen("Hello, 안녕하세요?") = 13

 

 

Posted by Scripter
,