C : listes chainées

Résolu/Fermé
didy_gwatinik Messages postés 352 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 30 mars 2010 - 8 oct. 2008 à 18:59
oupsman Messages postés 316 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 22 octobre 2008 - 9 oct. 2008 à 16:58
Bonjour,
J'essaie de faire un carnet d'adresse en liste chainée, je n'en suis qu'à la saisie et j'ai déjà un problème :( quelqu'un pourrait-il m'aider, je ne vois pas du tout ce qui ne va pas!!!
voila mon code :
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
int nbContact=0;
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++Declaration de la liste chainee+++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
struct contact
      {
             char nom[20];
             char prenom[20];
             char numTel[11];
             char mel[50];
             char motdepasse[9];
             struct contact *next; //pointe sur l'adresse du suivant
      }*pc,*start,*fin; //pointeur de type contact : pointeur courant, pointeur pour le début et pour la fin
      

/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Procedure memoireTampon (pour vider la memoire tampon apres un gets
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/      
void memoireTampon()
{
     fflush(stdin);
}

/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Procedure creationFiche (ajouter un nouveau contact automatiquement à la fin de la liste)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void creationFiche()
{
    int correct;
    //Pour la création de la 1ere fiche
    if(nbContact==0)
    {       
      //On veut ajouter un élément, on réserve de la mémoire
      start=(struct contact *)malloc(sizeof(struct contact)); 
      //-> pour atteindre les variables quand on est sur un pointeur
     memoireTampon();
    puts("Nom : ");
    gets(pc->nom);
    memoireTampon();
    puts("Prenom : ");
    gets(pc->prenom);
    memoireTampon();
      puts("Numero de telephone : ");
      gets(pc->numTel);
      memoireTampon();
      puts("Adresse mail : ");
      gets(pc->mel);
    strcpy(pc->motdepasse,"RIEN");
      start->next=NULL; //il n'y a rien derrière donc le pointeur est NULL
      fin=start;
      nbContact++;
    }
    else{
    //Pour la creation d'une Fiche quand au moins une fiche a été créée
    pc=(struct contact *)malloc(sizeof(struct contact)); //on alloue de la mémoire pour ajouter de nouvelles donnees
    memoireTampon();
    puts("Nom : ");
    gets(pc->nom);
    memoireTampon();
    puts("Prenom : ");
    gets(pc->prenom);
    memoireTampon();

      puts("Numero de telephone : ");
      gets(pc->numTel);
      memoireTampon();
      puts("Adresse mail : ");
      gets(pc->mel);
    strcpy(pc->motdepasse,"RIEN");
    fin->next=pc; //next recoit pointe vers l'adresse de pc
    pc->next=NULL;
    fin=pc;
    nbContact++;   
    }
}

                           
                      
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++          
Procedure Presentation
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void presentation()
{
     printf("\n\n\n\n\n\n");
     puts("       *****************************************************");
     puts("       *                                                   *");
     puts("       *                 CARNET D'ADRESSE                  *"); 
     puts("       *                                                   *");
     puts("       *****************************************************");
     printf("\n\n\n\n\n\n");
     system("pause");
     system("cls");
}
main( )
{presentation();
creationFiche();
getch();
return 0;}


Merci!

3 réponses

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
9 oct. 2008 à 10:19
là comme ça en lisant une fois je ne vois pas d'où peut venir le problème.
Dit nous où est ton problème.
où dans le code ?
compilation ? exécution ? Erreur de segmentation ? ou ça ne donne pas ce que tu attends ?
Petit conseil, suit ce qui est écris ici au sujet de gets() http://pwet.fr/man/linux/fonctions_bibliotheques/gets/ , c'est à dire ne l'utilise pas.
-1
oupsman Messages postés 316 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 22 octobre 2008 10
9 oct. 2008 à 12:24
Salut, Char Sniper a raison, précise à quel niveau se trouve ton problème ? compilation, execution ... etc ? sinon juste en passant, je vois que dans ton main tu fais un return 0; donc il faut que tu écrives int main(){ ... return 0;}
-1
didy_gwatinik Messages postés 352 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 30 mars 2010 80
9 oct. 2008 à 16:41
j'ai trouvé en fait c'est au niveau du nom du pointeur, je me suis trompée c'était au moment de l'exécution, j'utilisai le pointeur pc alors que ça devait être start voilà merci pour votre soutien quand même ;)
-1
oupsman Messages postés 316 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 22 octobre 2008 10
9 oct. 2008 à 16:58
pas de quoi, n'oublies pas de marquer "Résolu", à +
-1