[c] Boucle (Debutant)

Boucle (Debutant) [c] - C - Programmation

Marsh Posté le 23-01-2005 à 00:47:32    

Bonjour
 
Pourquoi quand je fais une boucle du style :
 
do{
   printf("continuer ? :" );
   fflush(stdin);
   rep=getchar();
}while(rep=='o');
 
hé bien ça quitte quand même si je réponds par "o"?
Voilà c'est bête je sais, mais là j'avoue avoir du mal !
merci !

Reply

Marsh Posté le 23-01-2005 à 00:47:32   

Reply

Marsh Posté le 23-01-2005 à 02:11:00    

Imaginons qu'on exécute ton programme, et qu'on tape : o<entrée>.
 
Le 'o' est lu par le getchar(), la condition du while est vrai, on boucle, tout va bien. Mais où passe le newline ? Et bien il ne passe nul part justement, il est lu par le getchar() suivant, le test du while est faux, et on quitte la boucle.
 
Le comportement de fflush n'est défini que pour les flux en écriture, donc pas pour stdin.

Reply

Marsh Posté le 23-01-2005 à 14:37:03    

Ok merci !
c'est sympa, j'ai mis un getchar() en plus
et ça marche.

Reply

Marsh Posté le 23-01-2005 à 14:52:38    

Diantre a écrit :

Ok merci !
c'est sympa, j'ai mis un getchar() en plus
et ça marche.


Ok, mais plutôt que de bidouiller, il faut apprendre à utiliser les bonnes procédures:
 
http://mapage.noos.fr/emdel/notes.htm#saisie


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 24-01-2005 à 20:21:54    

Diantre a écrit :

Ok merci !
c'est sympa, j'ai mis un getchar() en plus
et ça marche.


 
Tu peux également mettre un printf("\n" ); juste après et ca devrait passer sans un deuxieme getchar()

Reply

Marsh Posté le 24-01-2005 à 22:30:13    

Slay a écrit :

Tu peux également mettre un printf("\n" ); juste après et ca devrait passer sans un deuxieme getchar()


Stop à la bidouille, merci. En plus, ça n'a rien à voir...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed