begin process at 2012 05 29 18:49:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Général

 > 

Pb de récuperation d'une liste chainée passée en réf à une autre fonction


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Pb de récuperation d'une liste chainée passée en réf à une autre fonction

vendredi 15 avril 2011 à 16:22:39 | Pb de récuperation d'une liste chainée passée en réf à une autre fonction

amosaid

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 !
vendredi 15 avril 2011 à 16:59:26 | Re : Pb de récuperation d'une liste chainée passée en réf à une autre fonction

CptPingu

Administrateur CodeS-SourceS
Déjà ceci est fortement déconseillé:

typedef s_tag* taglist;



On ne masque jamais une étoile ! C'est important pour la compréhension du code. Faire un typedef ne me gêne pas, mais jamais dans le but de ne plus afficher une étoile. En regarde ton code, j'ai énormément de mal à savoir si je manie un pointeur ou une structure. C'est très frustrant...


Sinon, j'ai relevé un truc étrange:

Code C/C++ :
void afficherListe(taglist listep) // Sans étoile
int texte_parser(taglist *listep) // Avec étoile

int fct_parsing (taglist *listep) // Avec étoile
{
    texte_parser(&listep); // Mmmm, listrep, dasn ce cas, non ?
    afficherListe(listep); // Mmmm, *listrep, dasn ce cas, non ?
    return 0;
}


________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question


Cette discussion est classée dans : fonction, code, include, typedef, listep


Répondre à ce message

Sujets en rapport avec ce message

Nombre aléatoire en C [ par FoLKeN91 ] Bonjour tout le monde.Alors voici mon probleme, j'ai beau cherché je n'arrive pas à le résoudre. Je désire faire une fonction qui renvoie un nombre al Appel non conforme d'une fonction membre non static [ par nourhene4 ] Bonjour/Bonsoir J'ai appeler dans une classe une fonction membre d'une autre classe , mais une erreur survient ''appel non conforme d'une fonction mem problème de typedef [ par Larwin ] bonjour tout le monde. Nouveau de le monde du c/c++, j'avoue que je galère quelque peu et je me retourne vers la communauté des développeurs pour trou Pb Variable Snmp [ par atum251 ] Je cherche a interroger un switch, afin de recuperer, à partir de l'adresse Mac, sur quels ports les machines sont reliées. J'utilise le protocole Snm ça compile sur dev et ça marche pas sur codeblocks [ par m2z ] comme le titre l'indique voici le code source ça marche sans aucun probleme sue DEV et ça donne le message undefined reference to 'sleep' voici le cod Utilisation DLL dynamique / getprocAddress null [ par Inutqen ] Bonjour à tous ! J'essaye d'utiliser une DLL fournie sans .lib, mais avec un beau .h, du coup je tente la combo LoadLibrary et GetProcAddress. Le pro probleme avec Doxygen [ par Emcy ] Bonjour, J'ai un projet avec des dossiers et sous-dossiers. Dans mon IDE, j'ai des 'Include Search Path' de définis pour que le compilateur sache où fonction clock() de time.h sur Linux GCC [ par desesperado88 ] Bonjour tout le monde.J'utlise FEDORA16 et le compilateur gcc. [b]#include #include #include int main( int argc,char * argv[]) { getchar(); prin sdl et vc++2010 [ par hb2012 ] slt tout le monde, je sais bien mes amis que c'est pas possible d'afficher une image avec c++. par contre je m'adresse à vous pour savoir s'il existe setEnabled() et QLabel [ par raf924 ] Bonjour, je fais un programme destiné à verrouiller mon écran, dont voici le code : dialog.h [code=cpp] #ifndef DIALOG_H #define DIALOG_H #include


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales