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

  FORUM HardWare.fr
  Programmation
  C

  fgets est ignoré, comment faire une saisie robuste ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

fgets est ignoré, comment faire une saisie robuste ?

n°759965
weed
Posté le 11-06-2004 à 02:26:35  profilanswer
 

j'ai a peu pres le meme soucis que fred  
http://forum.hardware.fr/forum2.ph [...] subcat=440
 
 
lorsque j'utilise fgets, la fonction est ignoré, on me demande pas de taper du texte ...
 
 
j'ai alors utilisé getc(stdin);
je peux saisir mon texte, mais lorsque je me trompe une premiere fois, la deuxieme fois, j'ai à chaque fois le caractere 10 (en %d) soit la validation  
 
donc pour valider apres avoir fais une erreur, c'est mon deuxième caractere qui est pris en compte ....  
 

Code :
  1. char    valeur_str[4];
  2.     valeur_str[3] = '\0';
  3.    
  4. do
  5. {
  6.     printf("\n  o -> oui / n -> non  : " );
  7.     getc(stdin); //si je le retire, fgets est ignoré  
  8.     fgets(valeur_str,2,stdin);
  9. }   
  10. while (valeur_str[0] != 'o' && valeur_str[0] !='n');


 
 
je rappelle que j'ai essayé aussi avec fgetc  
mais cela ne resoud pas le probleme
 

Code :
  1. char choix;
  2. choix = fgetc (stdin);

mood
Publicité
Posté le 11-06-2004 à 02:26:35  profilanswer
 

n°759978
blazkowicz
Posté le 11-06-2004 à 06:30:48  profilanswer
 

à première vue et sans réfléchir je ferais un fflush(stdin), comme ça :o
 
  char    valeur_str[4];  
      valeur_str[3] = '\0';  
         
   do  
   {  
        printf("\n  o -> oui / n -> non  : " );  
        fflush(stdin);  
        fgets(valeur_str,2,stdin);  
   }    
   while (valeur_str[0] != 'o' && valeur_str[0] !='n');

n°759985
Taz
bisounours-codeur
Posté le 11-06-2004 à 07:44:39  profilanswer
 

putain mais c'est quoi ce bordel ... je me lève et je tombe sur un blaireau de la pire espèce :o
 
 char    valeur_str[4];  
      valeur_str[3] = '\0';  
 
 
->  char    valeur_str[4] = ""
 
 
ensuite, chaque affichage non terminé par un '\n' suivi d'une saisie est problématique à cause de la bufferisation de stdout : il faut donc forcer l'affichage -> fflush(stdout)

n°759989
blazkowicz
Posté le 11-06-2004 à 07:56:48  profilanswer
 

c vrai que j'eus pas pensé qu'on affiche ce qu'on saisit
c'est de la merde, qbasic fait jamais ça avec les input et les print :o

n°760011
Taz
bisounours-codeur
Posté le 11-06-2004 à 09:16:59  profilanswer
 

la merde, c'est de pas comprendre pourquoi fflush(stdin) n'a aucun sens et effet


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

  fgets est ignoré, comment faire une saisie robuste ?

 

Sujets relatifs
selectionner une ligne apres une faute de saisieListe deroulante avec saisie semi-auto ???
[c] ignore les lignes d'un fichiercontrole de la saisie d'un double
[Java] text qu'on veut pas voir : remplacer la saisie par astérisques?Faire communiquer 2 SGBD +rendre la liaison robuste à la panne réseau
Faciliter la saisie d'une tableliste déroulante et saisie semi-automatique
saisie de texteSaisie de texte en HTML
Plus de sujets relatifs à : fgets est ignoré, comment faire une saisie robuste ?


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)