J'essaie de lire les caractères chinois d'un infile, et j'ai trouvé quelques questions sur le sujet ici mais rien qui fonctionne pour moi ou convient à mes besoins. J'utilise l'implémentation fread() de this question, mais cela ne fonctionne pas. Je cours Linux.Lire et imprimer des caractères chinois en utilisant fread() et printf()?
#define UNICODE
#ifdef UNICODE
#define _UNICODE
#else
#define _MBCS
#endif
#include <locale.h>
#include <stdio.h>
#include <wchar.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char * argv[]) {
FILE *infile = fopen(argv[1], "r");
wchar_t test[2] = L"\u4E2A";
setlocale(LC_ALL, "");
printf("%ls\n", test); //test
wcscpy(test, L"\u4F60"); //test
printf("%ls\n", test); //test
for (int i = 0; i < 5; i++){
fread(test, 2, 2, infile);
printf("%ls\n", test);
}
return 0;
}
J'utilise le fichier texte suivant pour le tester:
一个人
两本书
三张桌子
我喜欢一个猫
et les sorties programme:
个
你
������
Quelqu'un at-il la sagesse sur le sujet?
Éditer: Aussi, c'est tout mon code parce que je ne suis pas sûr d'où il échoue. Il y a quelques trucs là où je fais des tests pour m'assurer que je peux imprimer des wchars Unicode qui ne sont pas entièrement pertinents à la question.
Windows ou Linux? Si Windows, essayez d'ouvrir le fichier en tant que binaire 'fopen (argv [1]," rb ")' – user3386109
Pouvez-vous s'il vous plaît supprimer les numéros de ligne de votre échantillon de code? Ils rendent difficile l'exécution du code lorsque j'essaie de vous aider. – fuz
@ user3386109 pas seulement cela, vous voudrez peut-être l'ouvrir comme un flux orienté caractères larges. – fuz