Bonjour tout le monde.
Alors voilà, j'ai un souci avec une petite fonction de mon crû, qui est censée simplement stocker un fichier texte dans une chaîne de caractère, afin de pouvoir traiter cette dernière (extraction d'infos intéressantes). Voici mon code (et désolé si il y avait une façon plus simple/élégante de faire la même chose, je suis pas un pro en prog) :
Bon, ce petit truc marche très correctement sur la plupart fichiers textes que j'essaie, sauf avec ceux qui sont en Unicode (pas de pot, c'est justement des fichiers en unicode que je dois traiter).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 int lectureFichier (char nom_fic[], char *ad) { char carac = 0; FILE* input=fopen(nom_fic,"r"); fseek (input, 2, SEEK_SET); //pour éviter les 2 premiers caractères du fichier, qui sont inutiles if (input != NULL) { carac=fgetc(input); do { if (carac != 0){ if (carac != 10){ if (carac != 13){ *ad = carac; }}} carac=fgetc(input); ad++; } while (carac != EOF); fclose(input); } return 0; } void main() { char nom_fic[50] = "Mayhem.TextGrid"; char ana[10000]; lectureFichier (nom_fic, ana); int taille = strlen (ana); printf ("longueur du texte = %d lettres\n", taille); printf ("%s", ana); }
En gros, si le fichier est en unicode, rien n'est stocké dans ma chaine ana, à la fin elle est de taille 0 et vide !
Quelqu'un aurait-il une idée du pourquoi, et surtout, une piste pour me dépêtrer de ce problème qui m'ennuie depuis un petit moment?
Merci !
Partager