우선 다음은 ms949 인코딩으로 저장한 C 소스이다.
* 소스 파일명: hello.c
#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 <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 <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
'프로그래밍 > C' 카테고리의 다른 글
MPFR 라이브러리를 이용하여 Gamma 함수값 계산하기 (0) | 2021.01.28 |
---|---|
cygwin 의 gcc 로 UTF-8 한글 처리하는 간단한 예제 (0) | 2014.04.13 |
Visual C++ 2010 과 pdcurses 를 이용한 helloworld 예제 (0) | 2014.01.15 |
gcc 와 ncurses 를 이용한 카라슈바 곱셈 연습기 (0) | 2014.01.08 |
64bit 리눅스에서 32bit 용 C 소스 컴파일하기 (0) | 2014.01.04 |