Probleme de boucle en language C
Résolu/Fermé
strixdev
Messages postés
17
Date d'inscription
mercredi 3 novembre 2010
Statut
Membre
Dernière intervention
15 août 2012
-
3 nov. 2010 à 21:08
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 3 nov. 2010 à 23:35
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 3 nov. 2010 à 23:35
2 réponses
oli_a42
Messages postés
11
Date d'inscription
dimanche 6 juin 2010
Statut
Membre
Dernière intervention
10 août 2012
1
3 nov. 2010 à 22:15
3 nov. 2010 à 22:15
Salut!
Il faut vider le flux d'entrée avant de refaire scanf ("%c", &reponse);
Tu met dans reponse : \n !!!! et pas 'o'
getchar();
printf("Pour continuer taper [o] sinon taper n'importe quelle touche: ");
scanf("%c", &reponse);
Ça devrait marcher.
Nota tes accolades me semblent déséquilibres dans ton code
Il faut vider le flux d'entrée avant de refaire scanf ("%c", &reponse);
Tu met dans reponse : \n !!!! et pas 'o'
getchar();
printf("Pour continuer taper [o] sinon taper n'importe quelle touche: ");
scanf("%c", &reponse);
Ça devrait marcher.
Nota tes accolades me semblent déséquilibres dans ton code
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
3 nov. 2010 à 22:21
3 nov. 2010 à 22:21
Bonjour,
Avant ton scanf("%c", &reponse); mets un getchar();
Cela enlèvera le résidu de caractère trainant dans le buffer clavier et qui fait échouer la boucle.
Sinon deux conseils : utilise plutôt double et au lieu de scan("%c",&reponse) utilise reponse=getchar();
Je n'ai pas regardé le code en détail car il est illisible. Merci d'utiliser les balises codes (à droite du bouton souligné).
Cdlt,
Avant ton scanf("%c", &reponse); mets un getchar();
Cela enlèvera le résidu de caractère trainant dans le buffer clavier et qui fait échouer la boucle.
Sinon deux conseils : utilise plutôt double et au lieu de scan("%c",&reponse) utilise reponse=getchar();
Je n'ai pas regardé le code en détail car il est illisible. Merci d'utiliser les balises codes (à droite du bouton souligné).
Cdlt,
3 nov. 2010 à 22:20
Modifié par Blashyrk le 3/11/2010 à 22:35
ne vaut-il mieux pas mettre fflush(stdin); ?
Ma prof de C nous a toujours dit d'utiliser cette méthode, elle ne nous a jamais parlé du getchar(); comme méthode équivalente à fflush(stdin); .
Lequel est le plus correct et le plus professionnel ?
Modifié par fiddy le 5/11/2010 à 09:19
ne vaut-il mieux pas mettre fflush(stdin); ?
Non. Et pour la simple raison que fflush() a un comportement indéfini sur les flux d'entrée comme stdin. fflush(stdin) ne doit jamais apparaître dans un programme.
Ma prof de C nous a toujours dit d'utiliser cette méthode
Beh elle se trompe...
Lequel est le plus correct et le plus professionnel ?
La version officielle est la boucle suivante :
Je te conseille d'en faire une petite fonction statique que tu pourras utiliser à ta guise.
Cdlt,