petit probleme de compréhension

petit probleme de compréhension - C - Programmation

Marsh Posté le 26-02-2008 à 21:13:11    

En fait j'ai ce code  :
 
   int x;
   do
   {
      x = getchar();
      printf ("x = %d ('%c')\n", x, x);
      while (getchar() != '\n' && getchar() != EOF);
   }  
      while (1);
 
 
 
Il marche très bien sauf lorsque j'appuie sur la touche entrée. Lorsque j'appuie dessus il affiche bien sa valeur 10  et le retour a la ligne mais la prochaine saisie ne fonctionnera pas normalement, et les suivante non plus.  Si vous pouviez m'éclairer ! j'ai énormement de mal a saisir toute les subtilités de la purge du buffer...  EOF a quoi sert-il exactement ?
 
merci d'avance !

Reply

Marsh Posté le 26-02-2008 à 21:13:11   

Reply

Marsh Posté le 26-02-2008 à 23:12:38    

getchar() renvoi EOF s'il y a une erreur.
Pour ton problème avec entrée, remplace while (getchar() != '\n' && getchar() != EOF); par while (x != '\n' && x != EOF) x = getchar();


Message édité par _mumu_ le 26-02-2008 à 23:13:27

---------------
"Software is like sex. It's better when it's free..."   Linus Torvalds
Reply

Marsh Posté le 27-02-2008 à 16:56:44    

Merci bcp ca marche parfaitement !

Reply

Marsh Posté le 03-03-2008 à 15:09:25    

bliblo4 a écrit :

En fait j'ai ce code  :  
<...>
Il marche très bien sauf lorsque j'appuie sur la touche entrée.<...>


C'est bien tordu comme codage... La forme canonique est :  

Code :
  1. int x;
  2.    while ((x = getchar()) != '\n' && x != EOF)
  3.    {
  4.       printf ("x = %d ('%c')\n", x, x);
  5.    }


Il doit y avoir une raison...
 
http://mapage.noos.fr/emdel/notes.htm#fgetc
 


---------------
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