Bonjour,
je suis en train d'essayer de lire un fichier caractère par caractère mais ce fichier contient des caractères normaux mais aussi des accentués. Je ne parviens pas à obtenir qqch de correcte. Lorsque les caractères sont des normaux, pas de problème mais lorsqu'ils sont accentués ça patauge .
Est-ce que qqun saurait m'aider ?
Supposons le fichier déjà ouvert par fopen en lecture (texte). Pour récupérer un caractère j'utilise fread. L'ennui c'est que je ne maîtrise pas du tout ça et j'ai quelques soucis car ensuite je dois convertir ce caractère en char* (car une fonction de recherche dans une table de hachage utilise un argument char* et non char). J'ai essayé comme suit :
Code :
- char c; //Caractere lu dans le fichier.
- fread(&c, sizeof(unsigned char), 1, input); //Lecture d'un caractere
- fct = g_hash_table_lookup(lexical_hash, (char *)c); //Recherche dans la table.
|
J'utilise un unsigned char pour avoir la taille du code ASCII étendu. Si je fais un printf pour voir le résultat bon ça n'affiche rien car c'est accentué et c'est pas supporté. Le problème que j'ai c'est alors de passer le "char c" vers un "char *" sans avoir d'ennui. Ca je ne parviens pas à le faire.
Je suis donc venu vous demander comment est-ce que vous vous feriez pour lire un fichier texte caractère par caractère sachant que certains sont des accentués (aigu, grave, tréma, circonflexe et ce que sur les minuscule et d'autres des majuscules) et qu'ensuite le caractère lu doit passer dans une fonction de recherche qui demande un (char *).
J'ai essayé de jouer avec des char * c dès le début mais j'ai tjrs eu des segfault dans fread (je maitrise pas) quelque soit l'argument que je lui passe (c, &c, *c; ...).
Sauriez-vous m'aider ?
Merci d'avance