d'jo a écrit :
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
|
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...
Message édité par Sve@r le 25-08-2006 à 15:27:29