Bonjour,
Voila: j'ai d'un part un fichier texte (*.txt) dont je lit tout les carcatère et de l'autre une liste chainé composé donc de structure avec les élément suivant:
code ascii de la lettre (type char)
frequence de la lettre dans le texte (type int)
pointeur vers prochaine structure (type *struct)
A chaque caractère, je recherche si la lettre existe déjà dans la liste chainé et incrémente la valeur de "fréquence" de la structure correspondante. Si ce n'est pas le cas,on ajoute un nouvelle élément en début de liste. Mais lorsque je veux lire le premier élément (genre la fréquence du premier carcatère par exemple, windows me renvoie une erreur)
Peut être est-ce mal codé ?
Je joint donc le code source en espérant que vous trouviez la solution!
Merci d'avance!![]()
déclaration structure et pointeur sur structure
Chaque caractère est stocké dans un char element, puis j'exécute un"ajouter_lettre(element,L);" avec L de type ptr_lettre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 //définition des types typedef struct lettre_ lettre; typedef lettre *ptr_lettre; typedef FILE * fichier; struct lettre_ { char code_ascii; int frequence; ptr_lettre suivant; };
La structure de tête a été initialisé à NULL évidement
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 void ajouter_lettre(char ascii,ptr_lettre actuel) { ptr_lettre inter=NULL; if(actuel==NULL) //ajout nouvelle lettre { inter=(ptr_lettre)malloc(sizeof(lettre)); inter->code_ascii=ascii; inter->frequence=1; inter->suivant=actuel; actuel=inter; } else { if((actuel->code_ascii)==ascii) (actuel->frequence)++; else ajouter_lettre(ascii,actuel->suivant); } }
Partager