Affectation de caractères non-ASCII à des caractères larges et impression avec printf

Comment atsortingbuer des caractères non-ASCII à un caractère large et l’imprimer sur la console? Ce code ne fonctionne pas:

#include  int main(void) { wchar_t wc = L'ć'; printf("%lc\n", wc); printf("%ld\n", wc); return 0; } 

Sortie:

 263 Press [Enter] to close the terminal ... 

J’utilise MinGW GCC sur Windows 7.

Je pense que vos appels à printf() échouent avec une erreur «Séquence illégale d’octets» renvoyée dans errno , du moins c’est ce qui se passe ici sur MacOS X avec l’exemple de code ci-dessus (et aussi si vous utilisez wprintf() au lieu de printf() ) . Pour moi, cela fonctionne lorsque j’appelle setlocale(LC_ALL, ""); avant l’appel à printf() pour qu’il cesse d’utiliser les parameters régionaux C par défaut:

 #include  #include  #include  int main(void) { wchar_t wc = L'ć'; setlocale(LC_ALL, ""); printf("%lc\n", wc); return 0; } 

Il est difficile de savoir sur quelle plate-forme / compilateur vous vous trouvez, donc YMMV.

Vous devez utiliser wprintf pour imprimer des wprintf de caractères larges:

 wprintf(L"%c\n", wc); 

utilisez wprintf (“% lc \ n”, wc); et vous obtiendrez votre sortie désirée