2013-05-04 6 views
2

일반 C에서 유니 코드 텍스트 파일을 읽고 싶습니다. 다음 코드는유니 코드 파일을 C 언어로 읽는 중

#include<stdio.h> 

int main() 
{ 
     FILE *ptr_file; 
     char buf[1000]; 

     ptr_file =fopen("input.txt","r"); 
     if (!ptr_file) 
      return 1; 

     while (fgets(buf,1000, ptr_file)!=NULL) 
      printf("%s",buf); 

    fclose(ptr_file); 
     return 0; 
} 
+5

. 문제는 유니 코드가 아닌 함수로 인쇄한다는 것입니다. 또한 버퍼링을하지 않기 때문에 넓은 문자가 999/1000 바이트 경계 (또는 1999/2000 등)를 횡단하는 경우 문제가 발생할 수 있습니다. – Dave

+0

"유니 코드"의 형식에 따라 달라집니다. UTF-8 (토큰 당 8 비트, 대부분의 토큰은 ASCII 표현과 동일하지만 일부는 하나의 문자를 만들기 위해 여러 토큰 사용)을 사용하는 경우 데이브가 언급 한 내용 일 수도 있지만 텍스트가 토큰 당 16 비트 (이 경우 코드는 전혀 작동하지 않습니다. 토큰이 8 비트라고 가정하기 때문에) (대부분의 컴퓨터에서 컴파일되면 9 일 수 있음) –

+0

" time/ – user1035089

답변

4

이 시도, 같은 작동하지 않습니다 : 당신은 잘 그것을 읽는

#include <locale.h> 
#include <stdio.h> 
#include <wchar.h> 

int main() 
{ 
    FILE *input; 
    wchar_t buf[1000]; 

    setlocale(LC_CTYPE,"it_IT.UTF-8"); // put your locale here 

    if ((input = fopen("input.txt","r")) == NULL) 
     return 1; 

    while (fgetws(buf,1000,input)!=NULL) 
     wprintf(L"%s",buf); 

    fclose(input); 
}