Bonsoir,
J'ai un problème avec une chaine de caractère lus dans un fichier .utf8.
J'ai un fichier texte qui contient des noms, je le lis grâce à la fonction fgets, je stock alors cette chaine de caractère dans un champ d'une structure grâce à la fonction strdup.
Ensuite je souhaite remplir une sorte d'arbre lexicographique avec tous les noms que j'ai lu dans le fichier.
Pour cela, j'ai créé un structure nœud qui contient une valeur et un tableau de 26 pointeur vers la structure nœud.
Pour remplir cette arbre je parcours la chaine de caractère et je transforme chaque lettre en un entier variant de 0 à 25 pour accéder à chaque case de mon tableau de pointeur. Voici le code de cette fonction:
Or dans certaines chaine de caractère que j'ai stocké, il y a des 'é' et autres caractères accentués et quand il passe par ma fonction retourne -1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 int chartoi(char c) { int i; i=(int)(tolower(c)-'a'); if(i>=0 && i<26) { return i; } else { return -1; } }
Par exemple pour le 'é' c "vaut" -61.
Comment cela est-il possible vu que un char est codé sur 1 octet et que la table ASCII ne contient pas de 'é'. Pourtant quand j'affiche la chaine de caractère avec gdb, le é est bien affiché.
Peut-être cela vient-il du faite que le fichier texte soit codé en utf8?
Merci de votre aide
Partager