2013-03-04 2 views
2

비 ASCII 문자를 와이드 문자에 할당하고 콘솔에 인쇄하려면 어떻게합니까? 아래로이 코드는 작동하지 않습니다와이드 문자에 비 ASCII 문자 지정 및 printf로 인쇄

#include <stdio.h> 
int main(void) 
{ 
    wchar_t wc = L'ć'; 
    printf("%lc\n", wc); 
    printf("%ld\n", wc); 
    return 0; 
} 

출력 :

263 
Press [Enter] to close the terminal ... 

내가

+2

char에 할당하지 않으면 wchar_t – Mike

+1

에 할당합니다. ['wchar_t'는 ASCII가 아닙니다.] (http://en.wikipedia.org/wiki/Wide_character) – m0skit0

+0

assignt하는 방법 어떤 문자, int, 변수에 'ć'문자를 넣고 올바르게 인쇄 하시겠습니까? 그것은 가능한가? – balky

답변

1

내가 통화를 생각 원하는 출력을 얻을 것이다, 적어도 그 위의 예제 코드와 맥 OS X에 여기 일어나는 것이다 (그리고 사용하는 경우 printf() 대신 wprintf()).

#include <stdio.h> 
#include <stdlib.h> 
#include <locale.h> 
int main(void) 
{ 
    wchar_t wc = L'ć'; 

    setlocale(LC_ALL, ""); 
    printf("%lc\n", wc); 

    return 0; 
} 

그것은 불분명하다 YMMV 있도록,에 어떤 플랫폼/컴파일러 : 나는 그래서 기본적으로 C 로케일을 사용을 중지하는 것이 printf()에 호출하기 전에 setlocale(LC_ALL, "");를 호출 할 때 나에게는 작동합니다.

+0

윈도우에서도 작동합니다. – balky

+0

Windows 7의 MinGW GCC – balky

2

당신은 와이드 문자열을 인쇄 할 wprintf를 사용해야합니다 윈도우 7에는 MinGW의 GCC를 사용하고 있습니다 :

wprintf(L"%c\n", wc); 
+0

그래도 문자를 출력하지 못합니다. – balky

+0

@balky - 사용중인 콘솔이 넓은 문자를 올바르게 표시하지 않습니다. – Mike

+0

Windows 콘솔 창을 의미합니까? – balky

0

wprintf ("% lc \ n", wc); 당신이 printf()errno 반환이«불법 바이트 시퀀스»오류와 함께 실패에

+0

작동하지 않습니다. – balky

+0

어떤 출력물이 정말로 원하는가? –