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

Messages postés
13
Date d'inscription
mardi 7 novembre 2006
Dernière intervention
5 juin 2008
- - Dernière réponse : cs_amentag
Messages postés
13
Date d'inscription
mardi 7 novembre 2006
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.
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Dernière intervention
16 février 2009
1
Merci
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++ (@++)

Merci SAKingdom 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de SAKingdom
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Dernière intervention
16 février 2009
0
Merci
wchar_t tab[300];

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

C++ (@++)
Commenter la réponse de SAKingdom
Messages postés
13
Date d'inscription
mardi 7 novembre 2006
Dernière intervention
5 juin 2008
0
Merci
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.
Commenter la réponse de cs_amentag
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Dernière intervention
16 février 2009
0
Merci
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++ (@++)
Commenter la réponse de SAKingdom
Messages postés
13
Date d'inscription
mardi 7 novembre 2006
Dernière intervention
5 juin 2008
0
Merci
Merci
^^
Merci.
Commenter la réponse de cs_amentag

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.