Newb - scanf et caractere - C++ - Programmation
Marsh Posté le 30-03-2003 à 17:40:33
Salut
Essaye plutôt ça :
Code :
|
Pour utilise 'O' ou 'N' il suffit de changer choix de type, et le code :
Code :
|
Marsh Posté le 30-03-2003 à 17:44:32
ReplyMarsh Posté le 30-03-2003 à 17:51:26
fflush(stdin);
Oui j'ai pas fait attention... Cette fonction n'est pas utile ici.
C'est pour forcer l'ecriture des donnees il me semble...
The function fflush forces a write of all buffered data
for the given output or update stream via the stream's
underlying write function. The open status of the stream
is unaffected.
Marsh Posté le 30-03-2003 à 17:55:41
Poireau a écrit : Salut
|
OK merci pour les caracteres je savais pas qu il fallait mettre ' autour
pour le scanf il ne demande plus qu une fois c bon
ca a l air de fonctionner a peu pres sauf qu il pose deux fois la question au lieu d une
Marsh Posté le 30-03-2003 à 17:56:22
Poireau > C'est pas qu'elle est pas utile, c'est qu'elle est indéfinie !
fflush(stdin) ne devrait jamais être utilisée, car fflush n'est censé être défini que sur les flux autorisant l'écriture (taz avait posté un lien à ce sujet, je sais plus trop ce que c'était).
Si tu veux vider le buffer du clavier, il vaut mieux lire tous les caractères un par un jusqu'a ce que tu tombes sur le caractère de fin de ligne :
Code :
|
Marsh Posté le 30-03-2003 à 18:41:46
http://forum.hardware.fr/forum2.ph [...] h=&subcat=
eh, les mecs, faites une petite recherche avant de poster, y a des tas de topics a propos de scanf etc. ca evite de se répéter et ça vous apprendra pas mal de truc.
Marsh Posté le 30-03-2003 à 19:04:10
++Taz a écrit : http://forum.hardware.fr/forum2.ph [...] h=&subcat= |
desole mais j y comprend rien...
Marsh Posté le 30-03-2003 à 19:33:05
bon en fait g remis le fflush(stdin) ca a l air de marcher
mais je sais pas du tt pkoi
en tt cas merci a vous tous
Marsh Posté le 30-03-2003 à 19:41:35
on prends la peine de te répondre, prends la peine de nous lire
Marsh Posté le 30-03-2003 à 19:58:21
vi mais qd tu me renvoit vers un sujet ou ca parle de trucs que j ai jamais vu ca m avance pas bcp...
Marsh Posté le 30-03-2003 à 20:04:25
j'ai donné ce lien à propos de fflush et ce topic parle exactement du mçme problème que celui que tu rencontre. Harko t'as tres bien répondu.
Apprends à lire
Marsh Posté le 30-03-2003 à 20:09:44
titan91 a écrit : bon en fait g remis le fflush(stdin) ca a l air de marcher |
Je confirme que ce ne sera pas grace au fflush
Marsh Posté le 30-03-2003 à 20:56:37
++Taz a écrit : j'ai donné ce lien à propos de fflush et ce topic parle exactement du mçme problème que celui que tu rencontre. Harko t'as tres bien répondu. |
ptet mais le fflush y en a besoin pour ke ca marche bien !
et c pas ce ke j avais compris !
qd au pkoi de la chose...
Marsh Posté le 30-03-2003 à 21:02:17
non, y a pas besoin du fflush qui d'ailleur ne fais rien. si tu lisais nos reponses, ca fait un bon moment que t'aurais compris et que t'aurais arreté de nous les briser
Marsh Posté le 30-03-2003 à 21:24:31
A ce que j'en ai compris, c'est pas tout à fait que le fflush ne fait rien ... C'est que dans ton cas tout à fait particulier de configuration d'OS, ca marche par miracle ... donc si jamais c'est pour un TP ou si tu passes ton prog à un pote, tu peux être certain à 99.9% que ca va foirer ...
Qu'est-ce que ca te coûte de remplacer ton fflush par des getchar ? Alors qu'au moins, tu seras sur que ton prog marchera partout ...
Marsh Posté le 30-03-2003 à 22:24:24
mais c koi getchar ???
commetn je l'utilise pour ne pas avoir 2 fois le message ?
Marsh Posté le 30-03-2003 à 22:27:17
titan91 a écrit : mais c koi getchar ??? |
euh, t'as lu le code que je t'ai filé plus haut ?
tu remplaces le fflush(stdin) par ce code !
Marsh Posté le 30-03-2003 à 23:06:25
Harkonnen a écrit : |
mais c fo le definir comment ?
Marsh Posté le 30-03-2003 à 23:19:50
Poireau a écrit : |
pourquoi tu l'emploie pour la lecture alors ?
Marsh Posté le 30-03-2003 à 23:20:02
titan91 a écrit : |
essaie de deviner
Marsh Posté le 30-03-2003 à 23:30:41
antp a écrit : |
Moi j'ai juste recopier le code qu'il y avait à la base...
J'ai pas fait attention à ce fameux fflush.
Pour info titan91, getchar permet de recuperer le contenu du flux stdin caractère par caractère. Le but étant ici de le vider manuellement (en arrivant jusqu'au caractère '\n' avec le code de Harkonnen.
getchar ne retourne pas un char, car la valeur spécifique EOF ne peut être codé dans un char.
Marsh Posté le 31-03-2003 à 19:50:47
merci bcp les mecs !
mais c fini c rendu (c t un projet)
en tt cas ca marche sans pb sur les autres machines ou g teste
Marsh Posté le 31-03-2003 à 22:02:04
Poireau a écrit : |
Ouais je t'avais confondu avec l'auteur du topic
Marsh Posté le 31-03-2003 à 22:14:12
titan91 a écrit : merci bcp les mecs ! |
t'as utilisé fflush() ?
Marsh Posté le 01-04-2003 à 20:10:04
juste une supposition. ton prof en corrigenat vas pas s'amuser à taper N(le nombre de programme)* les donénes. il fera un ficheir et redirigera. enjoy le fflush!
Marsh Posté le 01-04-2003 à 22:28:29
++Taz a écrit : juste une supposition. ton prof en corrigenat vas pas s'amuser à taper N(le nombre de programme)* les donénes. il fera un ficheir et redirigera. enjoy le fflush! |
Marsh Posté le 02-04-2003 à 00:02:27
???
g pas capte ?
de tte facon en cours on nous a dit ke fflush ca vidait le clavier et on s en est servi pour une saisie securisee (nombres uniquement)
donc mon truc c juste une adaptation
Marsh Posté le 02-04-2003 à 05:34:12
tonc ours est mauvais et archi faut
tu commences à m'énerver à ne pas lire ce qu'on te donne!
Citation : le comportement de fflush sur des flux entrants est absolument indéfini et ne fais absolument rien sur la plupart des systemes: et si ca fonctionne sur votre systeme, soyez sure que ça ne fonctionnera pas ailleurs. c'est le plus gros mythe qui existe en C. pour vider un flux, il faut lire à coup de fgetc .| |
Marsh Posté le 02-04-2003 à 06:04:36
Il te dit qu'il ne capte pas, c'est pas la peine de lui repeter la meme chose
Citation : |
PS: en substance ca dit exactement la meme chose, hein
RePS:
Voila comment il faut faire (mais on te l'a deja dit plus haut , mais bon tant que j'y suis):
Citation : 14.5 Comment vider le buffer associé à stdin ? |
Marsh Posté le 02-04-2003 à 06:07:26
ben ca vient du lien que je lui ai donné. s'il capte pas, on y peut rien, c'est qu'il a un problème de compréhension du français.
Marsh Posté le 02-04-2003 à 14:49:41
ok...
j comprend pas a 100% comment ca fonctionne mais j essayerais ca sur mon nouvo projet
Marsh Posté le 30-03-2003 à 17:17:35
salut les mecs !
encore une fois je viens vous demander un peu d aide
voila je voudrais faire un prog ki se relance ou qui quitte a la fin au choix de l utilisateur
voila ce que j ai fait :
le gros probleme c est qu en faisant ca il me demande de faire le choix et la je dois rentrer 2 nombres (sans qu il me redemande) !
seul le premier est pris en compte
en revanche si j ajoute un mot dans le scanf
scanf ("votre choix : %d \n", &choix);
alors je ne dois plus rentrer qu un seul nombre mais il n est jamais bon donc le programme va reposer la question
de plus j aimerais remplacer 1 et 0 par O et N mais je ne sais pas comment faire