Fgets scanf

Résolu
abdoulax Messages postés 875 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 22 juin 2012 - 5 janv. 2005 à 15:48
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 - 6 janv. 2005 à 22:54
Bon voici mon pb !!

Lorsque que j'utilise un scanf puis après un fgets, le fgets ne marche pas.
Après qlq recherche je me suis rendu compte que le scanf grader en mémoire
une entrée .... enfin bon c le scanf ki fé bugué le reste.

Pour que ça marche g été obligé de mettre de fgets à la suite ms c pas très propres !!

Si qlq1 c comment resoudre ce problème par exemple en effaçant ce ki ce trouve
dans le buffer input...

Merci

Have Fun ...

9 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 129
5 janv. 2005 à 16:49
Utilise fflush pour libérer le stream d'entrée avant d'appeler fgets !

DarK Sidious

[Administrateur et responsable VB/API du site ProgOtoP]
3
plus_plus_fab Messages postés 232 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 8 janvier 2005
5 janv. 2005 à 18:12
salut,



fait voir ton code stp.

"Utilise fflush pour libérer le stream d'entrée avant d'appeler fgets !"

fflush sur un flux d'entrée : effet indéfini. A ne pas faire !!!
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 129
5 janv. 2005 à 18:29
Extrait de la MSDN :



If the file associated with stream is open for output, fflush
writes to that file the contents of the buffer associated with the stream. If
the stream is open for input, fflush clears the contents of the buffer.



Donc si mon anglais est bon : fflush vide le buffer d'entrée si le fichier est ouvert en lecture...


DarK Sidious

[Administrateur et responsable VB/API du site ProgOtoP]
0
plus_plus_fab Messages postés 232 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 8 janvier 2005
5 janv. 2005 à 18:34
MSDN mes co***es !

on ne peut pas programmer correctement en lisant ça.



fflush sur un flux d'entrée : effet indéfini. chez m$, on se permet des fantaisies non standard, c'est tout.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 129
5 janv. 2005 à 18:43
Ben comment détecter qu'il n'y a plus de caractère dans le buffer d'entrée alors ? En détectant l'EOF ?


DarK Sidious

[Administrateur et responsable VB/API du site ProgOtoP]
0
plus_plus_fab Messages postés 232 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 8 janvier 2005
5 janv. 2005 à 19:13
pourquoi veux-tu savoir s'il y a ou non des caracteres dans le buffer d'entrée ?

S'ils y sont, c'est qu'il y a normalement une bonne raison.
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 129
5 janv. 2005 à 20:02
Ben du style tu récupère les caractères dans un pipe, comment peux-tu
éviter de bloquer un processus en attendant un caractère si celui-ci ne
doit jamais arrivé ?

DarK Sidious

[Administrateur et responsable VB/API du site ProgOtoP]
0
plus_plus_fab Messages postés 232 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 8 janvier 2005
5 janv. 2005 à 22:06
Je vois pas bien le rapport ...

le tampon I/O (le streambuf), c'est un tampon que manipule les fonctions de la librairie std.

C'est bien distinct du cas d'un pipe.
0
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
6 janv. 2005 à 22:54
Coucou

Au lieu de trouver la fonction nécessaire pour vider le buffer, autant
faire ces propres fonctions de saisies ! J'ai eu plein de problème avec
scanf() et quand j'en ai eu marre je me suis mis à réfléchir sur ma
propre fonctions. D'ailleur je les ai postées !

Le CyberMonde nous offre une meilleur qualité de vie
CyberMan.inc The WebSite
0
Rejoignez-nous