| |||||
| Dernière réponse | |
|---|---|
| Sujet : [C] fflush ? | |
| LetoII | De toute manière on pourrait débatre de ça pendant des heures, sans pour autant arriver à qqc de constructif. Je pense qu'il n'y a pas de solution toute faites et que ce genre de truc se règle au cas par cas suivant ses besoins. |
| Aperçu |
|---|
| Vue Rapide de la discussion |
|---|
| LetoII | De toute manière on pourrait débatre de ça pendant des heures, sans pour autant arriver à qqc de constructif. Je pense qu'il n'y a pas de solution toute faites et que ce genre de truc se règle au cas par cas suivant ses besoins. |
| zi_ril_wanou |
|
| LeGreg | habituellement ce genre de probleme arrive parce que le programmeur ne sait pas trop ce que fait "scanf" (je deconseillerais aussi d'utiliser gets aussi mais pour d'autres raisons) Voici un exemple de code faux(qui ne fait pas ce que le programmeur veut):
|
| LetoII | Quand tu redirige lun fichier vers l'entrée standard le flush ne pose pas de pb.Les autres cas sont des cas particuliers et effectivement quand on programme c bien de réfléchir un minimum, quoi qu'on fasse. De plus dans la majorité des cas faire systèmatiquement un flush après un récupération sur l'entrée standard t'évite bien des bugs à la con, ensuite si tu veux implémenter un comportement bien particulier dans un prog ok tu peux t'en affranchir, mais faut bien faire gaffe à ce que tu fais si tu veux pas avoir de surprise, mais on retombe dans un cas particulier là. |
| LeGreg | En fait, je concois un programme, je me demande comment il doit tourner: - on a un flux d'entree qui correspond a une frappe sur le clavier par l'utilisateur. La question c'est pourquoi l'utilisateur a tapé des choses inutiles sur son clavier? Peut-etre que le comportement du programme est a revoir la. - toujours dans le cas d'une frappe sur le clavier: j'ai un utilisateur qui a tendance a taper plus vite que les questions n'apparaissent parce qu'il connait les questions par coeur et c'est un gain de productivité de frapper sans attendre. Seul probleme le programme vide le buffer entre chaque entrée ce qui fait qu'apres s'etre fait avoir plusieurs fois l'utilisateur devra se resoudre a attendre patiemment chaque question posée par le programme (mais frustration tout de meme). - cas un peu différent: le programme lit sur l'entree standard qui pour une fois provient d'un fichier ou d'une sortie d'un programme. le flush correspond a vider le buffer de lecture, ce qui peut avoir un comportement indéfini si ce n'est pas prévu par le programme et c'est probablement dependant de la plateforme. De meme si l'entrée provient du reseau, le buffer se remplit a la vitesse ou les paquets arrivent. Donc a mon avis, le flush, si flush il y a, doit correspondre a un besoin bien precis fixé par le programme et pas fixé par des regles "je flushe avant chaque lecture". LeGreg |
| LetoII | Par ce que tu trouve plus cool de laisser des cochonerie derrière toi sur le flux d'entré peut-être?
C'est la seule manière propre de procéder à mon avis, il faut laisser les choses dans l'état ou tu les a trouver ( en tout cas la plus part du temps) |
| LeGreg | moi j'trouve ca pas tres cool comme style de prog
mais bon c'est vous qui decidez comment doivent tourner vos programmes.. LeGreg |
| chaica | Ok merci, je vais approfondir...
CHaiCA |
| LetoII | Oui tu doit faire un flush aporès chaque récupération d'entrée sur l'entrée standard pour virer les caractères que tu n'as pas utilisés |
| chaica | C'est vraiment bizarre car je n'utilise que des scanf et des getcharet à chaque fois je vide avec fflush(stdin) Mais il reste toujours un \n CHaiCA |
| antp | moi non plus j'utilise pas ça, mais bon... :D |
| koulip31 |
|
| antp | moi je le ferais avant d'executer scanf et autres... |
| chaica | J'ai lu les précédents topics mais j'ai une question.
Après chaque saisie, que ce soit à l'aide de scanf ou getchar, que ce soit pour une chaine ou un caractère, il faut mettre un fflush(stdin) pour nettoyer le flux d'entree c'est ca? Je demande parce que j'ai des \n qui trainent et ca me saoule grave. CHaiCA |




