이 c 코드도 좀 봐주십시오.
글쓴이: babbab / 작성시간: 금, 2011/02/18 - 10:07오전
#include <stdio.h> #include <wchar.h> int getline(wchar_t [], int); main(){ wchar_t str[100]; /*fgetws(str,100,stdin);*/ getline(str,100); printf("%d", wcslen(str)); wprintf(L"%s", str); } int getline(wchar_t s[], int lim){ int c,i; for (i=0; i<lim-1 && (c=getwchar())!=EOF && c!=L'\n'; ++i) s[i] = c; if (c == L'\n') { s[i] = c; ++i; } s[i] = L'\0'; return i; }
결과
스트링 길이에 주목해 주세요.
c:\Users\Owner\Desktop>cl test.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
test.c
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.
/out:test.exe
test.obj
c:\Users\Owner\Desktop>test
이다
5이다
3가 아닌 5로 길이가 나옵니다
Forums:
utf-8이 아닌경우 한글은 2byte로
utf-8이 아닌경우 한글은 2byte로 됩니다.
그래서 한글 두글자, 개행
그래서 5가 나옵니다
"이다j강"
이렇게하면?
8이 나오겠죠~
흘러가고있는 지금 이 시간에 충실하자.
locale을 한번 살펴 보세요.
아마도 로케일을 한번 살펴 보세요.
참고 url : http://www.cplusplus.com/reference/clibrary/clocale/setlocale/
------- 인용 ---------
The locale set on start is the same as setlocale(LC_ALL,"C") would set.
The entire default locale can be set by calling setlocale(LC_ALL,"");
------------------------------------
-------------- 아래 내용 추가하세요. 헤더는 헤더 위치로...
#include
setlocale(LC_ALL,"");
아 제가생각한것과는 다른부분이네요 또하나 배웠습니다
아 제가생각한것과는 다른부분이네요 또하나 배웠습니다 감사합니다~
흘러가고있는 지금 이 시간에 충실하자.
댓글 달기