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

Signaler
Messages postés
13
Date d'inscription
mardi 7 novembre 2006
Statut
Membre
Dernière intervention
5 juin 2008
-
Messages postés
13
Date d'inscription
mardi 7 novembre 2006
Statut
Membre
Dernière intervention
5 juin 2008
-
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

Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
12
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++ (@++)
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
12
wchar_t tab[300];

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

C++ (@++)
Messages postés
13
Date d'inscription
mardi 7 novembre 2006
Statut
Membre
Dernière intervention
5 juin 2008

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.
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
12
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++ (@++)
Messages postés
13
Date d'inscription
mardi 7 novembre 2006
Statut
Membre
Dernière intervention
5 juin 2008

Merci
^^
Merci.