fgets est ignoré, comment faire une saisie robuste ? - C - Programmation
Marsh Posté le 11-06-2004 à 06:30:48
à première vue et sans réfléchir je ferais un fflush(stdin), comme ça
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');
Marsh Posté le 11-06-2004 à 07:44:39
putain mais c'est quoi ce bordel ... je me lève et je tombe sur un blaireau de la pire espèce
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)
Marsh Posté le 11-06-2004 à 07:56:48
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
Marsh Posté le 11-06-2004 à 09:16:59
la merde, c'est de pas comprendre pourquoi fflush(stdin) n'a aucun sens et effet
Marsh Posté le 11-06-2004 à 02:26:35
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 ....
je rappelle que j'ai essayé aussi avec fgetc
mais cela ne resoud pas le probleme