1- mettre les prototypes des fonctions fct_parsing() et afficherListe() dans typedef.h et les supprimer de main.c
2- mettre les #define TRUE 1 et #define FALSE 0 dans typedef.h et les supprimer de main.c et parsing.c
3- dans main.c, ceci est incorrect.
1 2 3
| int fct_parsing (char *listep);
....
fct_parsing(&listep); |
et de plus incompatible avec la définition de la fonction dans parsing.c
1 2
| int fct_parsing (taglist *listep)
{.... |
erreur déjà mentionnée dans mon précédent post
4- Si on regarde le fonctionnement du code :
1 2
| taglist listep = NULL;
fct_parsing(&listep); |
est logique : fct_parsing() doit pouvoir modifier listep, donc on passe son adresse.
Le prototype de fct_parsing() doit donc être
int fct_parsing (taglist *listep);
Voyons fct_parsing() :
1 2 3 4
| int fct_parsing (taglist *listep)
{
texte_parser(&listep);
afficherListe(listep); |
texte_parser() doit pouvoir modifier le listep dans main(). Ici, dans cette fonction, listep est justement l'adresse du listep de main(). Donc on doit le passer à la fonction.
Par contre, afficherListe() n'a pas besoin de l'adresse du listep de main(), mais de sa valeur.
Alors :
1 2 3 4
| int fct_parsing (taglist *listep)
{
texte_parser(listep);
afficherListe(*listep); |
et les prototypes sont donc
1 2
| int texte_parser (taglist *listep);
void afficherListe(taglist listep); |
5- Ce qui est sûr, c'est qu'on ne peut avoir la fonction
int texte_parser (taglist *listep)
qui commence par
Partager