我正在尝试从文本文件中读取UTF8文本,然后将其中一些打印到另一个文件中。我正在使用Linux和gcc编译器。这是我正在使用的代码:
#include <stdio.h> #include <stdlib.h> int main(){ FILE *fin; FILE *fout; int character; fin=fopen("in.txt", "r"); fout=fopen("out.txt","w"); while((character=fgetc(fin))!=EOF){ putchar(character); // It displays the right character (UTF8) in the terminal fprintf(fout,"%c ",character); // It displays weird characters in the file } fclose(fin); fclose(fout); printf("\nFile has been created...\n"); return 0; }
目前,它适用于英文字符。
这段代码对我有用:
/* fgetwc example */ #include <stdio.h> #include <wchar.h> #include <stdlib.h> #include <locale.h> int main () { setlocale(LC_ALL, "en_US.UTF-8"); FILE * fin; FILE * fout; wint_t wc; fin=fopen ("in.txt","r"); fout=fopen("out.txt","w"); while((wc=fgetwc(fin))!=WEOF){ // work with: "wc" } fclose(fin); fclose(fout); printf("File has been created...\n"); return 0; }