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
Modérateur
Dernière intervention
4 mars 2013
131
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
Modérateur
Dernière intervention
4 mars 2013
131
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
Modérateur
Dernière intervention
4 mars 2013
131
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
Modérateur
Dernière intervention
4 mars 2013
131
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