Pb fgets en c
Fermé
milou43
Messages postés
13
Date d'inscription
mardi 24 août 2010
Statut
Membre
Dernière intervention
2 juin 2011
-
22 oct. 2010 à 10:58
milou43 Messages postés 13 Date d'inscription mardi 24 août 2010 Statut Membre Dernière intervention 2 juin 2011 - 23 oct. 2010 à 23:56
milou43 Messages postés 13 Date d'inscription mardi 24 août 2010 Statut Membre Dernière intervention 2 juin 2011 - 23 oct. 2010 à 23:56
3 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
23 oct. 2010 à 09:51
23 oct. 2010 à 09:51
Bonjour,
L'erreur est classique.
Lorsque tu saisis la moyenne il y aura un '\n' (touche entrée) dans le buffer clavier. Ce caractère sera envoyé à fgets et donc t'auras l'impression que l'instruction n'a pas marché.
Il faut donc vider le buffer clavier.
Par exemple avant le fgets : getchar();
Cdlt,
L'erreur est classique.
Lorsque tu saisis la moyenne il y aura un '\n' (touche entrée) dans le buffer clavier. Ce caractère sera envoyé à fgets et donc t'auras l'impression que l'instruction n'a pas marché.
Il faut donc vider le buffer clavier.
Par exemple avant le fgets : getchar();
Cdlt,
ydurce
Messages postés
78
Date d'inscription
samedi 9 octobre 2010
Statut
Membre
Dernière intervention
12 décembre 2010
18
23 oct. 2010 à 00:53
23 oct. 2010 à 00:53
bonjour,
la syntaxe scanf("%s", &_eleve[*_nbrEleve].nom); est mauvaise.
en effet 'nom' est un pointeur sur un char et &....nom est un pointeur sur le pointeur, donc scanf va écrire on ne sait trop où, ce qui peut expliquer le comportement 'bizarre' du programme.
(idem pour le prénom)
Pour corriger, enlevez le &.
cdlt
la syntaxe scanf("%s", &_eleve[*_nbrEleve].nom); est mauvaise.
en effet 'nom' est un pointeur sur un char et &....nom est un pointeur sur le pointeur, donc scanf va écrire on ne sait trop où, ce qui peut expliquer le comportement 'bizarre' du programme.
(idem pour le prénom)
Pour corriger, enlevez le &.
cdlt
milou43
Messages postés
13
Date d'inscription
mardi 24 août 2010
Statut
Membre
Dernière intervention
2 juin 2011
23 oct. 2010 à 23:56
23 oct. 2010 à 23:56
Merci beaucoup, le getchar(); marche.
Cdlt,
Cdlt,