salut à tous j'ai un problème d'affichage d'une liste chainée l'insertion ça marche mais l'affichage n'affiche que le dernier élément saisie et ça plante voici le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct etudiant etudiant;
struct etudiant{
       int code;
       char nom[30];
       char prenom[20];
       float note[4];
       char cours[4][20];
       float moy;
       etudiant *suivant;
       };
etudiant *debut=NULL;
etudiant *fin=NULL;
int id=0;
 
void saisieinserer(){
     etudiant *e;
     e=(etudiant *)malloc(sizeof(etudiant));
     e->code=id+1;
     printf("Entrer le nom de l'etudiant: ");
     scanf("%s",e->nom);
     printf("Entrer le prenom de l'etudiant: ");
     scanf("%s",e->prenom);
     for(int i=0;i<4;i++)
     {printf("Entrer le cours numero %d:  ",i);
     scanf("%s",e->cours[i]);
             }  
 
     if(debut==NULL)
     {debut=e;
      fin=e;
     }
     else{e->suivant=debut;
          debut=e;
          }
}
 
void afficher(){
     etudiant *e;
     e=(etudiant *)malloc(sizeof(etudiant));
     if(debut==NULL)
     {printf("La liste est vide");}
     else{e=debut;
          while(e!=fin){
                                 printf("%d\n",e->code);
                                 printf("%s\n",e->nom);
                                 printf("%s\n",e->prenom);
                                 for(int i=0;i<4;i++)
                                 printf("--%s\n",e->cours[i]);
                                 e=e->suivant;
          }
     }
     }
 
 
main(){
       saisieinserer();
       printf("-------------------");
       //afficher();
       saisieinserer();
       printf("-------------------");
       afficher();
       getch();
       return 0;
       }