Bonjour,
mon code (en c) contient des appels imbrquées des fonctions, chaque fonction doit retourner TRUE ou FALSE (pas d'échage de variables par "return") c.a.d que les modification sur les variables seront effectués par des passafes par référence.
j'ai créée un .h pour les définnition du type liste chainée ("typedef.h").
mon problème c'est lorsque j'affiche le continue de la variables (listes chainées) par une fonction appelante, passée en référence à une autre fonction (appelée), le continue (qui était correcte dans la fonction appelé de remplissage des listes chainées) sera erroné, et l'exécution fait un crash
voici le code :
typedef.h
Code C/C++ :
#ifndef TYPEDEF_H_INCLUDED
#define TYPEDEF_H_INCLUDED
typedef struct s_tag_
{
char name[512];
char value[512];
struct s_tag_ *nxt;
}s_tag;
typedef s_tag* taglist;
#endif // TYPEDEF_H_INCLUDED
parsing.c
Code C/C++ :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "typedef.h"
#define TRUE 1
#define FALSE 0
/// la fonction d'affichage ///
void afficherListe(taglist listep)
{
//s_tag *tmp = listep;
while(listep != NULL)
{
printf("name: %s\nvalue: %s\n", listep->name, listep->value);
listep = listep->nxt;
}
}
int texte_parser (taglist *listep)
{
listep = NULL;
/*
...des traitements sur un fichier pour récupérer des valeurs "tagnames et tagvalues"... */
ajouterEnFin(tagnames, tagvalues, &listep); // fonction de remplissage dans la liste chainée
afficherListe(listep); [size=200][b]// ici l'affichage est parfait !![/b] [/size]
[^^happy10]
return 0;
}
int fct_parsing (taglist *listep)
{
texte_parser(&listep);
afficherListe(listep); //[size=200] i[b]ci l'affichage crash !![/b][/size] [^^sad1]
return 0;
}
main.c
Code C/C++ :
#include <stdio.h>
#include <stdlib.h>
#include "typedef.h"
#define TRUE 1
#define FALSE 0
int fct_parsing (char *listep);
void afficherListe(taglist listep);
int main()
{
taglist listep = NULL;
fct_parsing(&listep);
afficherListe(listep); // affichage = meme pour ce qui ce passe dans fct_parsing
return 0;
}
Aidez moi SVP !
