slt t le monde je suis un débutant en programmation, j"ai un problème d'accomplir mon mini projet en langage c.
je veux justement supprimer le premier élément de la liste, mais je n'arrive pas.
voila le code, et j'espère quelqu'un de m'aider à trouver la solution........merci d'avance.
*******************************************************************
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
struct list
{ int num;
char nom[20], prenom[20], filiere[20], niveau[10], date[10];
struct list *psuivant;
};
//****************************FONCTION AJOUT**********************************
void ajout (list *tete)
{
FILE *db;
list *n ;
list *pcourant;
db=fopen("etudiant.txt","a+");
n = (list*)malloc(sizeof (struct list)) ;
pcourant=tete;
if (tete!=NULL)
{
while (pcourant->psuivant != NULL)
pcourant = pcourant->psuivant;
}
printf("\t\t.Enter le num¦ro : ");
scanf("%d",&n->num);
printf("\t\t.Entrer le nom : ");
scanf("%s",n->nom ) ;
printf("\t\t.Entrer le prenom : ");
scanf("%s",n->prenom );
printf("\t\t.Entrer la date de naissance : ");
scanf("%s",n->date ) ;
printf("\t\t.Entrer la fili¦re : ");
scanf("%s",n->filiere ) ;
printf("\t\t.Entrer le niveau : ");
scanf("%s",n->niveau );
fprintf(db,"%d\t%s\t\t%s\t\t%s\t\t%s\t\t%s\t\n",n->num,n->nom,n->prenom,n->date,n->filiere,n->niveau);
printf("\t-----------------------------------------------------------------\n");
pcourant->psuivant=n;
n->psuivant=NULL;
}
//****************************FONCTION SUPPRESSION***************************
void suppression (list *tete,char c[10])
{
list *sup, *tmp;
int s=0;
sup=tete;
tmp=tete;
if (strcmp(sup->psuivant->nom,c)==0)
{
tmp=tete->psuivant;
tete=tete->psuivant;
tete=tete->psuivant->psuivant;
free(tmp);
printf("\t\t Suppression avec succ¦s\n\n");
}
}//****************************FONCTION RECHERCHE*****************************
void recherche(list *tete)
{
FILE *db;
int x=0,i;
char nom_recherche[10];
list *rech;
rech=tete;
printf("\t\t-Entrer le nom que vous voulez chercher : ");
scanf("%s",&nom_recherche);
while (rech != NULL)
{
if (strcmp(rech->nom,nom_recherche)==0)
{
printf("\t\t-l'enregistrement est :\n");
printf("\t\t\t.Num¦ro : %d\n",rech->num);
printf("\t\t\t.Nom : %s\n",rech->nom);
printf("\t\t\t.Pr,nom : %s\n",rech->prenom);
printf("\t\t\t.Date de naissance : %s\n",rech->date);
printf("\t\t\t.Fili¦r : %s\n",rech->filiere);
printf("\t\t\t.Niveau : %s\n",rech->niveau);
printf("\n");
x=1;
}
rech=rech->psuivant;
}
if (x == 0)
printf("\t\t l'enregistrement n'existe pas\n\n");
db=fopen("etudiant.txt","r");
for(i=0;i==3;i++)
{
fscanf(db,"%d%s%s%s%s%s",&rech->num,&rech->nom,&rech->prenom,&rech->date,&rech->filiere,&rech->niveau);
if(strcmp(rech->nom,nom_recherche)==0)
{ printf("\t\t\t.Num¦ro : %d\n",rech->num);
printf("\t\t\t.Nom : %s\n",rech->nom);
printf("\t\t\t.Pr,nom : %s\n",rech->prenom);
printf("\t\t\t.Date de naissance : %s\n",rech->date);
printf("\t\t\t.Fili¦r : %s\n",rech->filiere);
printf("\t\t\t.Niveau : %s\n",rech->niveau);
}
}
fclose(db);
}
//****************************FONCTION AFFICHAGE*****************************
void afficher(list *tete)
{
list *paffiche ;
paffiche=tete;
if(tete!=NULL)
{
printf("\t---------------------\n");
while (paffiche != NULL)
{
printf("\t* Num¦ro : %d\n ",paffiche->num);
printf("\t* Nom : %s\n ",paffiche->nom);
printf("\t* Pr,nom : %s\n ",paffiche->prenom);
printf("\t* Date de naissance : %s\n ",paffiche->date);
printf("\t* Fili¦r : %s\n ",paffiche->filiere);
printf("\t* Niveau : %s\n ",paffiche->niveau);
printf("\t---------------------\n");
paffiche = paffiche->psuivant;
}
}
}
//****************************MAIN*******************************************
main()
{
clrscr();
FILE *db;
char c[10];
int choix ;
list *tete, *f;
tete = NULL;
db=fopen("etudiant.txt","a+");
f = (list*)malloc(sizeof (struct list)) ;
printf("\t\tEnter le num¦ro : ");
scanf("%d",&f->num);
printf("\t\tEntrer le nom : ");
scanf("%s",f->nom ) ;
printf("\t\tEntrer le prenom : ");
scanf("%s",f->prenom );
printf("\t\tEntrer la date de naissance : ");
scanf("%s",f->date ) ;
printf("\t\tEntrer la fili¦re : ");
scanf("%s",f->filiere ) ;
printf("\t\tEntrer le niveau : ");
scanf("%s",f->niveau );
fprintf(db,"%d\t%s\t\t%s\t\t%s\t\t%s\t\t%s\t\n",f->num,f->nom,f->prenom,f->date,f->filiere,f->niveau);
tete=f ;
f->psuivant = NULL ;
do
{ printf("\t\t\t\t******* Menu ******\n");
printf("\t\t\t\t** 1-Ajout **\n") ;
printf("\t\t\t\t** 2-Suppression **\n") ;
printf("\t\t\t\t** 3-Affichage **\n") ;
printf("\t\t\t\t** 4-Recherche **\n") ;
printf("\t\t\t\t** 5-Sortir **\n") ;
printf("\t\t\t\t*******************\n");
printf("\n\t-Taper votre choix : ");
scanf("%d",&choix) ;
printf("\n");
switch(choix)
{
case 1:ajout(tete) ;break ;
case 2:printf("\t\t Entrer le nom que vous voulez supprimer : ");
scanf("%s",&c);
suppression(tete,c);
break ;
case 3:afficher(tete) ;break ;
case 4:recherche(tete) ;break ;
}
}
while(choix!=5) ;
getchar();
}