Bonjour,
Je débute en C , j'essaye d'écrire un pgm qui me fait une liste de citoyens dont je fais plusieurs opérations sur celle ci
et j'ai un petit souci , lorsque j'entre les données dans la liste et que je veut faire une autre opération le pgm sort directement ,
un coup de main serait vraiment très apprécie ^^
les autres procedures ou fonction a part creation , importe peu pour l'instant , je veu juste que creation marche et que je peu choisire une autre opération a faire ,
voici le code :
#include<stdio.h>
#include<stdlib.h>
char num;
typedef struct pers {
char nc ;
char nom [10];
char prenom [10];
char adresse [20];
char date ;
char lieu[20];
char nation[20];
char dv ;
pers*suiv;
pers*prec;
}pers;
struct pers *tete,*e;
void creation (void)
{
char rep='o';
while (rep=='o')
{
e=(pers*)malloc(sizeof(pers));
if (tete==NULL)
{
printf("entrez le numero de la cn \n");
_flushall();
scanf("%s",&e->nc);
printf ("entrez le nom\n");
_flushall();
scanf ("%s",&e->nom);
printf ("prenom?\n");
_flushall();
scanf ("%s",&e->prenom);
printf ("entrez l'adresse\n");
_flushall();
scanf ("%s",&e->adresse);
printf ("entrez la date de naissance\n");
_flushall();
scanf ("%d",&e->date);
printf ("entrez le lieu de naissance\n");
_flushall();
scanf ("%s",&e->lieu);
printf ("entrez la nationalité\n");
_flushall();
scanf ("%s",&e->nation);
printf ("entrez la date de délivrance\n");
_flushall();
scanf ("%s",&e->dv);
}
else {
printf("liste pas vide , entrez un nouveu element \n" );
printf("entrez le numero de la cn \n");
_flushall();
scanf("%s",&e->nc);
printf ("entrez le nom\n");
_flushall();
scanf ("%s",&e->nom);
printf ("prenom?\n");
_flushall();
scanf ("%s",&e->prenom);
printf ("entrez l'adresse\n");
_flushall();
scanf ("%s",&e->adresse);
printf ("entrez la date de naissance\n");
_flushall();
scanf ("%d",&e->date);
printf ("entrez le lieu de naissance\n");
_flushall();
scanf ("%s",&e->lieu);
printf ("entrez la nationalité\n");
_flushall();
scanf ("%s",&e->nation);
printf ("entrez la date de délivrance\n");
_flushall();
scanf ("%s",&e->dv);
}
tete=e;
e->suiv=NULL;
e->prec=NULL;
printf ("avez vous une autre personne a entrez? o / n ");
_flushall();
scanf ("%s",&rep);
_flushall();
}
}
void consultation (void)
{
printf("la liste des citoyens \n ");
e=tete;
if (e==NULL)
{
printf(" la liste est vide \n");
}
else
{
while ( e!=NULL )
{
puts("");
puts("========================================");
printf("%d",e->nc);
printf("%s",e->nom);
printf("%s",e->prenom);
printf("%s",e->adresse);
printf("%s",e->lieu);
printf("%s",e->date);
printf("%s",e->nation);
printf("%s",e->dv);
puts("========================================");
puts("");
e=e->suiv;
}
}
}
int totale ()
{
int co;
co=0;
e=tete;
if (e==NULL)
{
printf("il n'ya aucun citoyen enregistré \n");
}
else
{
while (e!=NULL)
{
e=e->suiv;
co=co++;
}
printf (" le nombre totale de citoyens enregistrés est : %d \n",co );
}
return 0 ;
}
int recherche ()
{
printf("entrez le numero de la cn de la personne ");
_flushall();
scanf("%s",&num);
if (e==NULL)
{
printf("la liste est vide \n ");
}
else
{
if ( num==e->nc)
{
printf("son adresse est %s:",e->adresse );
}
else
{
while ((e->suiv!=NULL) && (e->nc != num ))
{
e=e->suiv;
}
if (e->suiv==NULL)
{
printf("la personne n'a pas eté trouvé");
}
else
{
printf("son adresse est %s:",e->adresse );
}
}
}
return 0;
}
main ()
{
tete = NULL ;
char ans='o';
int choice ;
while (ans == 'o' )
{
puts (" 1 - enregistrez un citoyens ");
puts (" 2 - Chercher un citoyen ");
puts (" 3 - Suprimer un citoyen ");
puts (" 4 - Consultaion ") ;
puts (" 5 - Nombre total des citoyen ");
puts (" 6 - Quiter ! ");
printf("choisissez une opération :\n");
scanf("%d",&choice);
if (choice == 1)
{
creation();
}
if (choice==2)
{
recherche();
}
if (choice == 4)
{
consultation();
}
if (choice == 5)
{
totale();
}
if (choice == 6)
{
puts(" au revoir ");
}
_flushall();
printf("avez vous une autre opération a faire ? o / n " );
_flushall();
scanf("%s",& ans );
}
}
