question conne de C - C - Programmation
Marsh Posté le 25-10-2004 à 21:11:37
soit tu fais ca avec
while((c=fgetc(stdin)) != EOF && c != '\n');
soit tu lit toute la ligne avec fgets puis tu fais ton sscanf
edit : dans le but de sauter le '\n'
Marsh Posté le 25-10-2004 à 21:14:08
mais pourquoi ca déconne uniquement au scanf("%c"... ?
parce que le \n est encore dans le buffer d'entrée ?
Marsh Posté le 25-10-2004 à 21:14:51
je pense pas qu'un scanf pour un char soit fort conseillé quoiqu'il arrive
Marsh Posté le 25-10-2004 à 21:17:49
je sais pas si getchar est ANSI ou non mais moi j'utiliserais
sexe=getchar();
fflush(stout);
Marsh Posté le 25-10-2004 à 21:19:35
Slay a écrit : je sais pas si getchar est ANSI ou non mais moi j'utiliserais |
Je disais pas ca pour toi
Marsh Posté le 25-10-2004 à 21:21:12
cris56 a écrit : Slay > sert a quoi ton fflush(stdout); ? |
de mémoire ( mais uniquement ) , je crois que getchar garde le 'enter' en mémoire, non ?
Marsh Posté le 25-10-2004 à 21:23:59
'\n' et saute le si tu le veux
mais le fflush(stdout) n'est d'aucune utilité la
Marsh Posté le 25-10-2004 à 21:25:39
essaye
scanf(\n"%c",&sexe);
je crois que c'est une sombre histoire de buffer
edit : scanf("\n%c",&sexe);
Marsh Posté le 25-10-2004 à 21:32:50
pour sauter le '\n' tu fais
while((c=fgetc(stdin)) != EOF && c != '\n');
Marsh Posté le 25-10-2004 à 21:40:54
et en faisant un fflush(stdin) juste avant ca peut marcher juste avant ?
Marsh Posté le 25-10-2004 à 21:46:45
avant ou apres ca fera rien, oubli fflush( stdin ) c'est pas bien, le standard ne definie aucun comportement pour ca
Marsh Posté le 25-10-2004 à 21:56:35
sinon un truc qui marche aussi c'est de mettre un autre scanf juste avant du genre
scanf("%c",&tmp);
scanf("%c",&sexe);
edit : ca marche mais je ne sais pas pourquoi
Marsh Posté le 25-10-2004 à 23:29:30
joce > J'espère que tu mettras ce sondage en ligne, qu'on puisse s'amuser un peu avec tes serveurs
Marsh Posté le 26-10-2004 à 10:11:01
fflush(stdin);
.
.
.
.
.
.
.
.
.
.
.
.
Marsh Posté le 30-10-2004 à 20:30:46
chrisbk a écrit : fflush(stdin); |
J'avais déjà soulevé ce pb dans le sujet "De l'utilité du fflush"
http://forum.hardware.fr/hardwaref [...] 6121-1.htm
Marsh Posté le 30-10-2004 à 21:15:34
pinguin007 a écrit : sinon un truc qui marche aussi c'est de mettre un autre scanf juste avant du genre |
quand tu fais scanf("%d", ...) tu t'attends à ce que scanf bouffe les chiffres représentant l'entier et rien d'autre. pour scanf("%c", ...) il bouffe 1 char. Quant tu tape '1' puis '2', tu insères des caractères \n
ton premier scanf bouffe le '1', le deuxième se coltine le '\n'.
Marsh Posté le 25-10-2004 à 20:48:56
y a quoi qui cloche, sachant que ca affiche :
entrez votre age
25
entrez votre taille
182
entrez votre poids
65
quel est votre sexe? f pour femme h pour homme
combien d'heures restez vous au repos?
0
combien d'heures avez une activité sedentaire?
24
combien d'heures avez une activité legere (marche)?
0
combien d'heures avez une activité sportive?
0
votre ration calorique idéale est de: 0.000000
(ca squizze le scanf("%c",&sexe)
merci
Message édité par joce le 25-10-2004 à 20:49:13