assurer son scanf - C - Programmation
Marsh Posté le 24-08-2006 à 17:10:10
d'jo a écrit : Bonjour , |
Normallement, si ton programme est bien conçu, tu ne devrais jamais avoir à vider ton buffer. C'est pour çà que "fflush" est sans effet sur "stdin".
Le seul moment où tu as un caractère parasite, c'est quand tu fais saisir un nombre style "scanf("%d", &var)". Là, tu saisis ton nombre et tu appuies sur "entrée". A ce moment, le scanf récupère les octets numériques mais laisse le "entrée" dans le buffer car ce n'est pas du chiffre. Pour remédier, il te faut rajouter juste après un "getchar()" qui va te supprimer ce "entrée" de ton "stdin".
Ou bien tu fais saisir ton nombre sous forme de chaîne avec "fgets()" (donc le "entrée" est récupéré par le "fgets()" et ne reste pas dans "stdin" ) suivi de "sscanf" pour le formatter.
Mais pour répondre à ta question initiale, il existe "fpurge()" (ou "__fpurge()" sous Linux) qui peuvent te purger un buffer...
Marsh Posté le 25-08-2006 à 00:41:07
d'jo a écrit : J'ai des problemes avec le scanf , |
Soit tu apprends à t'en servir :
http://xrenault.developpez.com/tutoriels/c/scanf/
Soit tu apprends à t'en passer :
http://mapage.noos.fr/emdel/notes.htm#saisie
http://mapage.noos.fr/emdel/notes.htm#fichiers
Marsh Posté le 25-08-2006 à 00:46:56
fflush(stdin) n'est pas défini par la norme et peut provoquer des comportments indésirables.
Marsh Posté le 24-08-2006 à 15:57:24
Bonjour ,
J'ai des problemes avec le scanf ,je sais qu il recupere des données formatées dans le buffer.
J aimerai pouvoir tout vider et ensuite faire mon scanf... fflush(stdin) est sans effet quelqu un à une idée ??
merci d avance
Message édité par d'jo le 24-08-2006 à 16:06:12