Fgets non prit en compte...
Résolu/Fermé
Rhydan1
Messages postés
382
Date d'inscription
jeudi 3 juillet 2014
Statut
Membre
Dernière intervention
2 avril 2017
-
23 juil. 2014 à 13:32
Rhydan1 Messages postés 382 Date d'inscription jeudi 3 juillet 2014 Statut Membre Dernière intervention 2 avril 2017 - 23 juil. 2014 à 14:32
Rhydan1 Messages postés 382 Date d'inscription jeudi 3 juillet 2014 Statut Membre Dernière intervention 2 avril 2017 - 23 juil. 2014 à 14:32
A voir également:
- Fgets non prit en compte...
- Créer un compte google - Guide
- Créer un compte gmail - Guide
- Supprimer compte instagram - Guide
- Créer un compte instagram sur google - Guide
- Gmail connexion autre compte - Guide
3 réponses
sambia39
Messages postés
610
Date d'inscription
vendredi 31 juillet 2009
Statut
Membre
Dernière intervention
9 février 2023
49
23 juil. 2014 à 13:42
23 juil. 2014 à 13:42
Bonjour
essaye de vidé ton buffer après le scanf
à bientôt
essaye de vidé ton buffer après le scanf
à bientôt
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
23 juil. 2014 à 14:15
23 juil. 2014 à 14:15
Bonjour,
Alors tout d'abord, je te déconseille l'utilisation de variables globales (sauf dans certains cas particuliers, mais ce n'est pas le cas ici).
Petit conseil pour faciliter la maintenance : utilise l'opérateur sizeof pour avoir la bonne taille (cela sera dynamique).
Exemple : <ital>fgets(nom,
Je te conseille également l'utilisation de fonction pour faciliter la lecture.
Il te manque aussi le cas où l'utilisateur tape autre chose que 1 et 2 au premier essai => Il suffit de mettre le cas "default" dans le switch.
N'oublie pas non plus de mettre un '\n' en fin de tes printf. Surtout du dernier pour forcer l'affichage avant le return 0;.
Sinon pour ton erreur. C'est normal. Lorsque tu utilises : scanf("%d", ...); cela stockera un '\n' dans le buffer clavier. Le fgets() suivant lira le '\n'.
Il suffit donc de mettre un getchar(); juste après chaque scanf("%d", ...);.
Après, si tu veux faire propre, il faudrait vider le buffer systématiquement. Mais cela se complique un peu...
Cdlt,
Alors tout d'abord, je te déconseille l'utilisation de variables globales (sauf dans certains cas particuliers, mais ce n'est pas le cas ici).
Petit conseil pour faciliter la maintenance : utilise l'opérateur sizeof pour avoir la bonne taille (cela sera dynamique).
Exemple : <ital>fgets(nom,
sizeof nom</gras>, stdin);
Je te conseille également l'utilisation de fonction pour faciliter la lecture.
Il te manque aussi le cas où l'utilisateur tape autre chose que 1 et 2 au premier essai => Il suffit de mettre le cas "default" dans le switch.
N'oublie pas non plus de mettre un '\n' en fin de tes printf. Surtout du dernier pour forcer l'affichage avant le return 0;.
Sinon pour ton erreur. C'est normal. Lorsque tu utilises : scanf("%d", ...); cela stockera un '\n' dans le buffer clavier. Le fgets() suivant lira le '\n'.
Il suffit donc de mettre un getchar(); juste après chaque scanf("%d", ...);.
Après, si tu veux faire propre, il faudrait vider le buffer systématiquement. Mais cela se complique un peu...
Cdlt,
Rhydan1
Messages postés
382
Date d'inscription
jeudi 3 juillet 2014
Statut
Membre
Dernière intervention
2 avril 2017
70
23 juil. 2014 à 14:32
23 juil. 2014 à 14:32
Ouah ! Merci beaucoup ! Je pensais pas avoir fait autant de fautes ^^ C'est super, ça fonctionne, et je comprend mieux le fonctionnement ! :o *_*
Encore merci !! :D
Encore merci !! :D
Rhydan1
Messages postés
382
Date d'inscription
jeudi 3 juillet 2014
Statut
Membre
Dernière intervention
2 avril 2017
70
23 juil. 2014 à 14:30
23 juil. 2014 à 14:30
Bonjour, merci de votre réponse, mais je débute, alors comment le vider ?