Lire et récuperer des caractères unicode dans un fichier texte. HELP T_T

Résolu
cs_amentag Messages postés 13 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 5 juin 2008 - 31 mai 2008 à 18:05
cs_amentag Messages postés 13 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 5 juin 2008 - 4 juin 2008 à 21:20
Bonjour.
Je suis confronté à un problème de taille depuis plusieurs jours et je suis a deux doigt de laisser tomber.
Je doit lire (et ensuite récupérer dans un tableau, des caratcères unicode (japonais) dans un fichier texte) j'ai utilisé tout ce qui existe (il me semble):
-fread
-fgetws: fonction très etrange qui pour deux apels succesif identiques lira une fois corectement et une autre fois de facon incomplète (j'ai apprit que c'est une fonction peu fiable).
-fgetwc, getwc.
bref...le fait est que j'ai souvent un probleme de récuperation des caractere (fgetws récuperai bien mais de façon parfois imcompréhensible).
J'ai pourtant déclaré mes tableau en wchar_t.

Pour l'instant le programme (de traduction par comparaison) fonctionne très bien si j'entre manuellement les listes de caractères dans les tableau placé dans un fichier .h (2000 mot à écrire ......c fatigant et rageant et du coup sa réduit a neant les chance de pouvoir partager le log).
Help vous etes fort vous pouvez y arriver^^.
Ouvert à toute proposition.
Merci.

5 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
1 juin 2008 à 17:33
Oops pardons, si on ajoute un 0 de fin de chaine, ce ne sera plus taille_du_buffer qui pourra être lu mais taille_du_buffer-1

wchar_t tab[300];
int i;

i = fread(tab, sizeof(wchar_t), 299, file);
tab[i] = 0;

C++ (@++)
1
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
31 mai 2008 à 18:34
wchar_t tab[300];

fread(tab, sizeof(wchar_t), 300, file);

C++ (@++)
0
cs_amentag Messages postés 13 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 5 juin 2008
1 juin 2008 à 11:29
Merci d'avoir prit le temps de me répondes SAKingdom.
Sa à l'air de marché!^^(les kanjis (caractere japonais) s'afichent  mal dans la console ce qui est normal, mais au moin en comptant 3 caractere par kanji le compte y est^^).

Mais a chaque fois que j'ai utilisé cette fonction pour lire ces caracteres japonais j'ai toujour eu deux ou trois caracteres bizares et suplementaire en debut de toute premiere ligne. D'ou viennent-ils et comment les supprimer?
Et s'aurai-tu quel fonction utiliser pour les ecrire dans un fichier texte (wprintf?)?
Merci.
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
1 juin 2008 à 17:13
As tu ajouté le 0 de fin de chaine ?



wchar_t tab[300];
int i;

i = fread(tab, sizeof(wchar_t), 300, file);
tab[i] = 0;

Pour écrire dans un fichier, c'est, tout simplement, fwrite qui fonctionne comme fread.

fwrite(buffer, taille_dun_element, nombre_delements_a_ecrire, flux);

wprintf sert à écrire des chaines unicode à la console. C'est probablement ce qu'il te faut pour afficher.

Au passage, fread, fwrite et ce genre de fonctions se fout complètement du type d'encodage des caractères voir même du type de donnée.
Ces fonctions servent à lire et écrire des données binaires (qui peuvent très bien être des chaines de caractère Unicode ou encore un tableau de int).
Aucune conversion, traitement ou quoi que ce soit n'est effectué par ces fonctions. Tout est écrit (ou lu) en brute.

C++ (@++)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_amentag Messages postés 13 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 5 juin 2008
4 juin 2008 à 21:20
Merci
^^
Merci.
0
Rejoignez-nous