Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2022 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C] Problème de getc dans une boucle

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Problème de getc dans une boucle

n°347454
robbystar
My baby got the bends
Posté le 30-03-2003 à 11:35:46  profilanswer
 

Petite question concernant les saisies en C :
 
Désolé si c'est un problème de "newbie" mais je ne vois pas vraiment de solution... voici mon problème :
j'ai une boucle ou je gère des saisies de caractères de ce type :

Code :
  1. #include <stdio.h>
  2. int main(void) {
  3. int entry;
  4. while(1) {
  5.  entry = getc(stdin);
  6.  if ( entry == EOF ) {
  7.   fprintf( stderr, "Erreur!\n" );
  8.  } else {
  9.   fprintf( stdout, "Valeur de entry = %c\n", entry);
  10.  }
  11. }
  12. }


 
Si j'entre un caractère (disons 'x' par exemple) j'obtiens l'affichage suivant :

Code :
  1. Valeur de entry = x
  2. Valeur de entry =   // du blanc, NULL, retour chariot?


 
Si je j'entre deux caractères (disons "ab" ), j'obtiens l'affichage suivant :

Code :
  1. Valeur de entry = a
  2. Valeur de entry = b
  3. Valeur de entry =   // même chose qu'au dessus!


 
Si quelqu'un pourvait éclairer ma lanterne, ça serait fort chouette  :D, étant donné je n'ai pas trouvé de topic parlant de ce problème.
 
Y a t'il une histoire de flush en dessous de tout ça ?
 
ps: je travaille sous cygwin à priori ça ne devrait pas venir de là non?  
 
 
 

mood
Publicité
Posté le 30-03-2003 à 11:35:46  profilanswer
 

n°347475
Taz
bisounours-codeur
Posté le 30-03-2003 à 12:46:35  profilanswer
 

et le '\n' que tapes en faisant [entrée] tu crois qu'il disparait magiquement? :hello:  
 
préfères le while canonique

Code :
  1. int c;
  2. while((c=fgetc(stdin)) != EOF)
  3. {
  4.   // faire semblant de travailler
  5. }

n°347480
robbystar
My baby got the bends
Posté le 30-03-2003 à 13:01:18  profilanswer
 

++Taz a écrit :

et le '\n' que tapes en faisant [entrée] tu crois qu'il disparait magiquement? :hello:  
 
préfères le while canonique

Code :
  1. int c;
  2. while((c=fgetc(stdin)) != EOF)
  3. {
  4.   // faire semblant de travailler
  5. }




Merci c'est ce que je voulais savoir, c'est donc bien le new line qui provoque ça!  :jap:  
 
Du coup je fais ça et ça règle mon problème :

Code :
  1. while ((entry=fgetc(stdin)) == '\n');


 
Encore merci! :)


Message édité par robbystar le 30-03-2003 à 13:19:32

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C] Problème de getc dans une boucle

 

Sujets relatifs
pop-up problème[Collection] Compilation ok mais execution probleme!
[PHP] Problème simple de fonctionsProbleme builder 5: dll et windows XP
Problème de téléchargement du JDK1.4 de SUN[CSS & DIV] Problème de placement
problème pas clair (en tout cas pour moi :p )problème bizarre: connexion base mysql
Probleme de dateProgrammation GTK Linux , problème de #include
Plus de sujets relatifs à : [C] Problème de getc dans une boucle


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR