wprintf 가 영어조차 안찍혀요..
글쓴이: shkim / 작성시간: 토, 2010/02/06 - 10:53오전
우분투 9.10 쓰고 있고요,
#include < stdio.h >
#include < wchar.h >
int main()
{
printf("char string\n");
wprintf(L"WIDE-char string\n");
return 0;
}
처럼 간단한 소스를 컴파일해서 돌려보는데,
char string 만 찍히고 아래 wprintf 것은 안찍히네요.
혹시 제 컴이 미친건지 위 코드 실행 테스트 좀 부탁합니다. -_-;;
Forums:
glibc의 경우 스트림에
glibc의 경우 스트림에 서로 썩어 쓰지 말라고 매뉴얼에 나와 있습니다.
http://www.gnu.org/software/libc/manual/html_node/Streams-and-I18N.html
It is important to never mix the use of wide and not wide operations on a stream. There are no diagnostics issued. The application behavior will simply be strange or the application will simply crash.
경험에 의하면 보통 먼저 실행된 것만 출력되는것 같아요. 위 예제는 printf가 먼저 사용되었으므로 char관련 함수만 제대로 되고요, 순서를 바꾸면 wprintf만 되었던것 같습니다.
원래 안되는 것입니다..
동일 stream에 대해서 normal string과 wide string을 섞어서 사용할 수 없습니다.
둘 중 먼저 사용한 방식으로만 계속 사용해야 합니다.
http://www.gnu.org/software/libc/manual/html_node/Streams-and-I18N.html#Streams-and-I18N
쓰고보니 벌써 답글이 달렸군요.. ;;
그렇군요. 윈도에서
그렇군요. 윈도에서 유니코드 많이 써서 걍 섞어 썼었는데 리눅스에선 안되는거군요..
순서 바꿔보니 WIDE 만 찍히네요.
댓글 달기