OK... c'est bien ce que je pensais !
par contre cette ligne la et ce quelque soit le compilateur, elle est refusée:
*Ptab = p //erreur d'assignation
si je fais par contre ceci :
**ptab = p, pas d'erreur à la compil mais il plante à l’exécution, ce qui est logique
donc je me suis dit que j'allais faire ceci :
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 void ajouterEleve (ELEVE *** ptab, int *nb) { int i; char reponse; ELEVE *p, **pat; i= *nb; p = realloc (*ptab, (i+1)*sizeof (ELEVE)); if (p==NULL) { printf("\n probleme d'allocation de memoire\n"); free (*ptab); } else { printf("\nVeuillez introduire le nom SVP : "); fgets (p->nom,sizeof p->nom, stdin); viderBuffer(); *(pat+i) =p; *ptab = pat; i++; } *nb = i; }
Ceci fontionne pour ajouter UN élève, dès qu'il y en a DEUX ou plus, le programme accepte mais quand je fais appel à mon fonction pour afficher les données, ca plante.
Au cas ou, voilà mes fonctions pour afficher les données :
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 void afficher (ELEVE *pel) { printf("\nNom: %s", pel->nom); /*printf("\nSexe: %c", pel->sexe) ; printf("\nAge: %d", pel->age) ;*/ } void afficherEleve (ELEVE **ptab, int n) { int i ; printf("\n:%d: eleve(s)",n); for (i = 0; i < n; i++) { afficher (*(ptab+i)) ; printf("\ni: %d", i) ; } }
Partager