Bonsoir,
Je dois écrire un programme en ADA qui (entre autres) compte les caractères d'un fichier texte écrit en français, donc contenant des caractères accentués 'é', 'à', etc...
Je stocke ensuite ces valeurs dans un tableau indicé selon le code ascii du caractère.
Voilà le code de la fonction :
Le problème est que les caractères accentués sont mal lus : lorsque je lis le contenu d'un fichier ne contenant que le caractère 'é' par exemple, je devrais avoir dans mon tableau la valeur 1 dans la case 130 (130 étant le code ascii de 'é'), mais je me retrouve avec la valeur 1 dans les cases 169 et 195. J'au cru comprendre lors de recherches sur le web que c'est dû à l'encodage du fichier (utf8 ou ISO 8859-1), mais je n'ai pas trouvé de solution à ce problème.
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 procedure Cree_Tableau (T : in out Tab_Car; Nom_Fichier : in String) is Indice : Integer; C : Character; Fichier : Ada.Streams.Stream_IO.File_Type; Flux : Ada.Streams.Stream_IO.Stream_Access; begin -- Ouverture du ficher Open(Fichier, In_File, Nom_Fichier); Flux := Stream(Fichier); -- lecture tant qu'il reste des caracteres, et comptage du nb d'occurences dans le tableau while not End_Of_File(Fichier) loop C := Character'Input(Flux); Indice := Character'Pos(C); T(Indice) := T(Indice) + 1; end loop; -- Fermeture du fichier Close(Fichier); end Cree_Tableau;
Voilà, merci de votre aide !
Partager