UTF-8로 작성된 code를 gcc로 컴파일하려면 어떻게 해야 하나요?
글쓴이: kukyakya / 작성시간: 토, 2004/07/24 - 4:03오전
#include<stdio.h> int main() { printf("strlen("가나다") = %d\n",strlen("가나다")); }
를 gcc로 컴파일하면
a.c: In function `main': a.c:5: error: stray '\352' in program a.c:5: error: stray '\260' in program a.c:5: error: stray '\200' in program a.c:5: error: stray '\353' in program a.c:5: error: stray '\202' in program a.c:5: error: stray '\230' in program a.c:5: error: stray '\353' in program a.c:5: error: stray '\213' in program a.c:5: error: stray '\244' in program
이런 에러를 내는군요.
LANG, LC_* 는 모두 ko_KR.UTF-8 로 설정된 상태입니다. 검색해봐도 해결방법을 잘 모르겠습니다.
Forums:
[code:1]#include <stdio.h>#inclu
이렇게는 해보셨나요?
아마 원하시는 대로 작동하지 않을 것입니다. 멀티바이트 문자를 지원하는 함수를 쓰셔야 할 거예요.
아니 이런 어처구니 없는 실수를;;;글을 지워버리고 싶을 정도로
아니 이런 어처구니 없는 실수를;;;
글을 지워버리고 싶을 정도로 창피하군요 :oops:
답변 감사합니다. 아무리 봐도 UTF-8 문제인 줄 알았는데, 의외로 다른 데에 문제가 있었네요. :shock:
strlen 함수의 반환값은 size_t이므로 "%d"를 그냥 쓰시면 안
strlen 함수의 반환값은 size_t이므로 "%d"를 그냥 쓰시면 안 되고, (int)로 캐스팅을 하시든지 size_t에 맞는 "%u" 또는 "%lu"를 쓰셔야 합니다. 물론 실질적으로는 문제가 발생할 확률이 매우 낮지만요. :-)
댓글 달기