assurer son scanf

assurer son scanf - C - Programmation

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 cité 2 fois
Message édité par d'jo le 24-08-2006 à 16:06:12
Reply

Marsh Posté le 24-08-2006 à 15:57:24   

Reply

Marsh Posté le 24-08-2006 à 17:10:10    

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
Reply

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


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

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.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed