[C] Liste chainée

Résolu
Silver53 -  
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Bonjour,
un petit souci avec ma liste chainée, voici mon code :

int load(contact *Debut,contact *Fin)
{
FILE *Contact = NULL;
char NOM[TAILLE_MAX] = "";
char PRENOM[TAILLE_MAX] = "";
char NUMERO[TAILLE_MAX] = "";
char EMAIL[TAILLE_MAX] = "";
int compteur=1;
contact* pcourant=Debut;

system("cls");
Contact = fopen("Contact.txt", "r");

if(Contact!=NULL)
{
contact *Debut = (contact*)malloc(sizeof(contact));
fscanf(Contact, "%s %s %s %s",Debut->nom,Debut->prenom,Debut->numero,Debut->email);
printf("%s",Debut->nom); //LA CA MARCHE

while (!feof(Contact))
{
contact *Nouveau = (contact*)malloc(sizeof(contact));
if(compteur==1)
{
Debut->suivant=Nouveau;
}
pcourant=Nouveau;
fscanf(Contact, "%s %s %s %s", Nouveau->nom,
Nouveau->prenom,Nouveau->numero,Nouveau->email);

Nouveau->suivant =Fin;
Fin=Nouveau;
pcourant=pcourant->suivant;
compteur++;
}

Fin->suivant=Debut;
printf("%s",Fin->nom);
printf("%s",Debut->nom); // LA CA MARCHE AUSSI

} // ON SORT DU IF
fclose(Contact);
printf("%s",Debut->nom); // ET LA CA MARCHE PLUS
}

Donc voilà quand il s'agit d'afficher ma liste chainée, il m'affiche <null> quand je suis sorti du if, où est mon erreur?

merci
Configuration: Windows XP
Internet Explorer 7.0

2 réponses

  1. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    tu as déclaré Debut comme un contact * et tu le fais pointé sur nom qui est un char * , Debut ne serait pas plutot un char ** ?
    0
    1. Silver53
       
      En fait contact est une structure :

      typedef struct contact{
      char nom[30];
      char prenom[30];
      char numero[30];
      char email[30];
      struct contact *suivant;
      }contact;

      tout marche à merveille sauf qu'une fois sorti de la fonction, lorsque j'affiche Debut->nom il m'ecrit <null>. Je pense qu'il doit vidé le maillon Debut de ma liste chainée mais je ne vois pas où?
      0
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    essaie pour voir de faire la déclaration
    contact *Debut = (contact*)malloc(sizeof(contact));
    à l'exterieur de if
    0
    1. Silver53
       
      oui c'est ce que j'ai fait : j'ai supprimé le if et là je ne peux plus compiler : error C2082: redefinition of formal parameter 'Debut'
      0
      1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > Silver53
         
        c'est normal
        tu as déjà ici int load(contact *Debut,contact *Fin)

        mets Debut2 ou autre chose
        0
      2. Silver53 > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
         
        merci c'était bien ça :)
        0
      3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > Silver53
         
        de rien ;-)
        je mets en résolu
        0