FORUM Syndrome-OC - Jacky-PC


  Programmation


  Autre


  Pb commande flush en c

 




Le salon de discussion : R4v3n WaterCooling & TEC (Peltiers) : Sk_rmouche et 23 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pb commande flush en c

n°4113
cybersplas​h
Laissez moi chanter !!!
Posté le 24-09-2004 à 15:22:40  profilanswer
 

salut a tous
 
J'ai un petit pb avec la commande flush()
 
quand je fait un flush(stdin) mon compilateur me dit que stdin n'est pas defini
 
sinon la commande fflush n'existe carrement pas j'ai tester avec stdout et stderr et tjs le mm pb lors de la compile
 
jutilise kdevelop sous mandrake 10.0
 
si vous pouvez me dire d'ou vient le pb ce serai cool je debte en c :)

mood
Google
Posté le 24-09-2004 à 15:22:40  profilanswer
 

n°4114
Deadog
Dain Bramaged
Posté le 24-09-2004 à 16:40:55  profilanswer
 

#include <stdio.h>
 
le fichier de base ...
 
 
et aussi, on ne flush jamais stdin, c'est illogique

n°4162
cybersplas​h
Laissez moi chanter !!!
Posté le 26-09-2004 à 19:08:36  profilanswer
 

ba deja pour stdio.h c deja fait
 
et aussi pour stdin c utile avec le scanf ki garde en memoire la touche entrer et donc provoc une erreur lor dune seconde utilisation d'un scanf ki a le mm type de variable

n°4163
xDiamant
Posté le 26-09-2004 à 19:37:22  profilanswer
 

slt :
-----
 
Y'a moyen d'avoir le code pour y jeté un yeux ?
 
Bye

n°4164
Deadog
Dain Bramaged
Posté le 26-09-2004 à 19:53:40  profilanswer
 

cybersplash a écrit :

ba deja pour stdio.h c deja fait
 
et aussi pour stdin c utile avec le scanf ki garde en memoire la touche entrer et donc provoc une erreur lor dune seconde utilisation d'un scanf ki a le mm type de variable


 
 
tu fais mal ton programme alors [:spamafote]

n°4165
cybersplas​h
Laissez moi chanter !!!
Posté le 27-09-2004 à 07:05:05  profilanswer
 

le programme est super simple c un enchainemen de deux scanf avec le mm type
 a par kil y en a un dans une fonction et lotre dans main
 
ca donne
 
scanf("%c",&LeChoix);
tir(&resultat); ==> scanf("%c",&c);
 
et la ba g mon programme ki se deroule normalemen mais il sarrete po au second scanf pqc dans le buffer de stdin il reste encore le lf du scanf davan et vu kils on tt les deux le mm type ba ca couille et normalmen en utilisan un flush(stdin) ca doi marcher mais la ca ve se compiler mais po se construire :(

n°4166
Deather2
OpenBSD: the way to go!
Posté le 27-09-2004 à 07:09:57  profilanswer
 

j'ai exactement le même problème avec getchar (enfin pas moi mais biboune :D) et j'ai pensé à flushé stdin mais j'y arrive pas :/ même problème lol :/
 
Et DDG j'vois pas pourquoi tu dis qu'il fais mal son programme?

n°4167
cybersplas​h
Laissez moi chanter !!!
Posté le 27-09-2004 à 12:38:40  profilanswer
 

getchar c le mm pb kavec scanf
a la premiere exe du prog tu rentre tavaleur et tu appuie sur entrer le pb c avec une otre instruction du mm type tu va chercher ta valeur dans le tampon stdin et la il va prendre la valeur du entrer ki na pa etai prise par ton otre scanf ou getchar donc ca sote ton instruction
 
normalemen il fo flusher le stdin mais j arrive po c pe etre du z linux enfin je c po :) deja ken cour on nous a parler de fflish et la je doi utiliser flush enfin bon si kunkun pe maider ce serai cool


---------------
http://forum.presence-pc.com/overc [...] -254-1.htm aidez moi svp
n°4168
DarkBears
j'aime le miel put1 d'abeilles
Posté le 27-09-2004 à 12:52:19  profilanswer
 

fflush(stdout);

n°4169
cybersplas​h
Laissez moi chanter !!!
Posté le 27-09-2004 à 13:20:32  profilanswer
 

ba pk fluser le stdout ?
stdout c les info retourner par le pc donc c po ce ke je ve flusher a moin ke sous unix stdout corresponde o stdin de win mais je pense po ke ce soit ca


Message édité par cybersplash le 27-09-2004 à 13:23:53

---------------
http://forum.presence-pc.com/overc [...] -254-1.htm aidez moi svp
n°4170
cybersplas​h
Laissez moi chanter !!!
Posté le 27-09-2004 à 13:35:29  profilanswer
 

c bon g la solution donc stdin stdout et stderr n'existe pas sous unix
c une invention de win :)
 
donc pour traduire stdin et tt les otre il fo les remplacer par des valeur
stdin ==> 0
stdout ==> 1
stderr ==> 2
 
donc ca devient flush(0) ou flush(1) ou flush(2)


---------------
http://forum.presence-pc.com/overc [...] -254-1.htm aidez moi svp
n°4171
nicodache
marmotte en chocolat concept ©
Posté le 27-09-2004 à 13:47:37  profilanswer
 

si, ca existe...
 
on l'utilise sur notre HP-UX à l'école...
 
ya juste que t'a pitet oublié #include <stdio.h>
ou encore que ton unix est loin d'être à jour ;)


---------------
modérateur inside [:nicodache] plankaivoo [:nicodache] - ici powered - Je roule en micra 1l 55cv et je t'emmerde :o
n°4172
cybersplas​h
Laissez moi chanter !!!
Posté le 27-09-2004 à 14:00:43  profilanswer
 

bizarre je vien de faire les mise a jour et g le include stdio.h et mon prof dalgo vien de me dire ca donc je c po dou ca vien alors :)
 
enfin je pense kavec 0 1 et 2 ca doi amrcher vu ke c la base enfin je v tester chez moi ce soir pqc la je suis en cour avec mon prof devan moi lol :)


Message édité par cybersplash le 27-09-2004 à 14:01:20

---------------
http://forum.presence-pc.com/overc [...] -254-1.htm aidez moi svp
n°4174
CSoL
bomberman manique ...
Posté le 28-09-2004 à 14:36:31  profilanswer
 

flushall(); // et puis basta les gars
juste apré le scanf("%c",&bidule);ou alors tu double le scanf
 
solution une :
scanf("%c",&a);
flushall();
 
solution deux :
scanf("%c",&a);
scanf("%c",&a);
 
 
sachant que les deux revienne au mème c juste une différence de code rien de plus
 
edit : c deux trucs qu'on m'a appris en cours de c ;)


Message édité par CSoL le 28-09-2004 à 14:38:00
n°4175
Deather2
OpenBSD: the way to go!
Posté le 28-09-2004 à 17:30:11  profilanswer
 

MaVariable = getchar();
fflush(stdin);
 
Marche impeccable sous Linux & Windows. (DevC++)

n°4176
Deadog
Dain Bramaged
Posté le 28-09-2004 à 20:25:03  profilanswer
 

cybersplash a écrit :

c bon g la solution donc stdin stdout et stderr n'existe pas sous unix
c une invention de win :)


 
 
[:rofl] [:rofl] [:rofl] [:rofl] [:rofl] [:rofl] [:rofl]  
 
 
bon, entre ton scanf tu fais un getchar() ou un autre scanf vide
 
mais par pitié, pas de flush barbare sur stdin :sarcastic:

n°4177
Deather2
OpenBSD: the way to go!
Posté le 28-09-2004 à 22:04:27  profilanswer
 

Qui y'a t'il de mal à flusher stdin? [:spamafote]

n°4178
Deadog
Dain Bramaged
Posté le 28-09-2004 à 23:16:54  profilanswer
 

Deather2 a écrit :

Qui y'a t'il de mal à flusher stdin? [:spamafote]


 
 
est-ce que tu vois une seul once de logique à flusher un fichier que tu ne gère pas ? que tu ne fait que lire ?

n°4180
Deather2
OpenBSD: the way to go!
Posté le 29-09-2004 à 14:37:38  profilanswer
 

Pour moi flush lis tout ce qui est présent dans le buffer et de ce fait le rend vide, je vois pas ce qu'il y'a d'illogique, je vois plutôt un côté pratique ;)
Je peux me tromper cela dis ^^

n°4182
Deadog
Dain Bramaged
Posté le 29-09-2004 à 22:34:20  profilanswer
 

flush sert a faire sortir les données du tampon d'un flux. Pour un flux en entrée tu fais ca en lisant dans le flux, non ?


Message édité par Deadog le 29-09-2004 à 22:34:36
n°4183
Deather2
OpenBSD: the way to go!
Posté le 29-09-2004 à 23:10:28  profilanswer
 

wé tu peux lire dans le flux mais je trouve ça crade de faire un getchar(), puis ceux qui lisent ton code comprennent pas forcement ... fflush c'est plus clair au moins, puis ça marche [:spamafote]
 
enfin bon on va pas s'prendre la tête 100 ans puis tu dois connaitre mieux que moi donc ;)

n°4184
Deadog
Dain Bramaged
Posté le 29-09-2004 à 23:18:12  profilanswer
 

bah je peux t'assurer que c'est bcp plus crade de faire un flush qu'un getchar, et que la solution du getchar ou du scanf("\n%... est connue et que tout le monde la comprendra ;)

n°4185
Deadog
Dain Bramaged
Posté le 29-09-2004 à 23:20:05  profilanswer
 

et une des raison pour laquel on ne fait pas de flush c'est que y'a pas que le clavier qui écrit dans stdin
y'a aussi la redirection d'entrée standard, et ça c très utilisé
 
en faisint un flush sur ton stdin alors qu'il provient en fait d'une redirection, bah tu perd tout ce qui y'a dans le flux au lieu de simplement passer le(s) \n

n°4187
Deather2
OpenBSD: the way to go!
Posté le 29-09-2004 à 23:32:06  profilanswer
 

Ah exact, j'avais pas pensé à ça ;)

n°4188
Deadog
Dain Bramaged
Posté le 29-09-2004 à 23:37:23  profilanswer
 

et pour achever le tout :d
je dirais qu'un programme ne doit jamais modifier son environnement, particulièrement l'environnement duquel il dépend.
 
tu peux flusher un flux de sortie parce que c'est ton programme qui est censé le modifier, mais pas un flux d'entrer parce que ton programme n'est pas censé intéragir avec, juste t'en servir comme source de donnée, et par conséquent tjrs lire c'est qui s'y trouve

n°4189
Deather2
OpenBSD: the way to go!
Posté le 29-09-2004 à 23:55:10  profilanswer
 

mais je pensais que flush lisait le buffer afin qu'il se vide, je me trompe?
il écrit dedans pour l'effacer?
 
J'ai regardé la page man mais j'y capte pas gd chose :D

n°4190
Deadog
Dain Bramaged
Posté le 30-09-2004 à 00:13:16  profilanswer
 

il n'efface pas, il place le pointeur à la fin, en gros
mais faut voir le déplacement de pointeur un peu comme une écriture
 
disont que pour stdin, le déplacement normal de pointeur se fait de 1 en 1 (scanf en fait plusieurs mais les lit tjrs 1 par 1) et que flush fait le bourrin et va à la fin direct

mood
Google
Posté le 30-09-2004 à 00:13:16  profilanswer
 


Aller à :
Ajouter une réponse

  FORUM Syndrome-OC - Jacky-PC


  Programmation


  Autre


  Pb commande flush en c

 

Hit Parade