Voila j'ai un problème dans une fonction qui doit supprimer un maillon de ma liste chainée...
Voici la structure:
Code :
- typedef struct personnel
- {
- char nom[20];
- char prenom[20];
- char sexe[1];
- int age[2];
- int departement[2];
- int remuneration[7];
- int id[10];
- struct personnel *suivant;
- struct personnel *precedent;
- }personnel;
|
et voici le code de ma fonction:
Code :
- void supprime_pers(personnel *premierepers, personnel *dernierepers, personnel *perscourante)
- {
- if (*premierepers->id ==0)
- {
- printf("\n\t\tIl n'y a pas d'entree dans la base..." );
- }
- else
- {
- int id=0, no_id=1, id_pers;
- perscourante=premierepers;
- system("clear" );
- printf("\n\t\tID de la personne a supprimer ? (0 pour sortir) " );
- scanf("%d",&id);
- if (id==0)
- {
- return;
- }
- if (*dernierepers->id<id)
- {
- printf("\n\t\tL'ID specifie n'existe pas dans la base..." );
- getchar(); getchar();
- return;
- }
- while((*perscourante->id)!=(id)) //mon problème se situe par ici
- {
- printf("boucle\n" );
- perscourante=perscourante->suivant);
- }
- printf ("\nnom: %s", *perscourante->nom);
- getchar();
- }
- getchar();
- }
|
Mon probleme se trouve dans la derniere boucle while... erreur de segmentation
Code :
- ID de la personne a supprimer ? (0 pour sortir) 1
- Erreur de segmentation
- [root@portable projetc]#
|
Ce que je cherche à faire c'est retrouver une fiche de renseignement d'une personne et la supprimer, pour cela je passe par l'ID de la personne en le cherchant... pour l'instant je cherche l'ID et j'affiche le nom, plus tard je supprimerais la fiche.
Je lutte depuis une bonne demi heure pour trouver mon erreur, si quelqu'un peut me l'expliquer ou me corriger, ce serait très sympa 
Message édité par LaTeX_ le 11-10-2003 à 17:46:38