SCANF ALONE

deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 - 28 mai 2006 à 20:32
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 - 29 mai 2006 à 16:59
Bonjour,


J'ai honte de poser cette question, mais la je trouve pas :s.



Voila j'expose mon problème lors d'un programme sous linux (mandriva 2006 Free) je demande a
l'utilisateur si oui ou non il désire continuer. Mais voila, le
programme passe le scanf. J'ai donc retirer la demande juste avant
(faite avec un scanf aussi) et la , ho miracle le deuxième scanf
fonctionne. Donc en claire mon problème est que je peut utilisé que une
seul fois scanf dans mes programmes car sinon les autres sont ignoré.
Pour palier a ce problème sous windows un fflush(stdin) suffisait et
bien ici que neni. Cela ne va pas.



Quelqu'un peut-il m'aider?

10 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
28 mai 2006 à 20:57
Excuse mon indiscrétion, mais je vois que tu as déja fait pas mal de
sources en API Win32. Qu'est ce qui te pousse a retourner faire des
appli console?

Aussi petit conseil, ne précise pas que tu es sous Mandriva, ca fait mauvais genre (Linux aussi remarque)
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
29 mai 2006 à 11:55
Salut,
tu peux donner un bout de ton code pour voir ?
| Aussi petit conseil, ne précise pas que tu es sous Mandriva, ca fait mauvais genre (Linux aussi remarque)
Ah tien donc d'ou tu sors ca ?

TuRn3r
0
deadbird Messages postés 49 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 7 mars 2010
29 mai 2006 à 13:00
tu dois vider le buffer d'entrée car il reste des \n dedans, ce qui fait que ton premier scanf

passe à la trappe.

je crois que getc peut résoudre le pb. J'y ai été confronté il y a 4 ans en BTS, je crois que c'est ca...à voir...
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
29 mai 2006 à 14:09
Vecchio : Oui et je continue a en faire, mais j'avai envie de passer
sous linux ( pas complètement, juste m'instruire lol curiosité vilain
défaut :D ). Et ce qui m'a pousser a faire des appli console sous
linux, c'est que... j'ai bien installé gtk sous linux mais bon... il y
a des erreurs partout. Mais il est certain que la programmation API
win32 en C reste mon dada :).


deadbird : entièrement daccord avec toi, mais pour cela j'ai tjrs
utilisé fflush(stdin) et dans ce cas ci cela ne fonctionne pas.


turnerom : exemple :


int main(void){

  int i;


    scanf("%d",&i);

    fflush(stdin);


    scanf("%*c");


    scanf("%d",&i);

    fflush(stdin);


    return 0;

}

Il prend en compte mon 1er scanf et pas les autres.
0

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

Posez votre question
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
29 mai 2006 à 15:36
Je vais peut-etre dire un truc tout bete, mais en faisant

int main(void){
  int i, j;
scanf("%d %d", i, j);

return 0;
}
Cela ne resout-il pas ton problème ?

Sinon, essaye fflush(stdout) au lieu du stdin.

TuRn3r
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
29 mai 2006 à 15:41
lol non, les 2 scanf c'était pour l'exemple :D. non le stdout je l'ai dja esseyé aussi :s
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
29 mai 2006 à 15:57
|

lol non, les 2 scanf c'était pour l'exemple :D
--> Je me disais aussi :D

En mettant un printf bidon entre les 2 scanf, est-ce que ca prend en compte le 2eme scanf ?

TuRn3r
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
29 mai 2006 à 16:37
non plus j'ai déjà esseyé. Mais de toute façon peu importe maintenant,
je doit réinstaller mandriva, j'ai hum fait une commande qu'il ne
fallait pas. Donc espérons que tout rentre dans l'ordre après. Mais
merci quand même d'avoir répondu ;)
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
29 mai 2006 à 16:51
Une petite question : scanf("%*c"); ca fait quoi ?
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
29 mai 2006 à 16:59
scanf("%*c"), l'* ignore l'affectation, c'est pour cela qu'il n'y a pas d'argument. En claire cela remplace un peut getch().
0
Rejoignez-nous