Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1273 connectés 

  FORUM HardWare.fr
  Programmation
  C

  question conne de C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

question conne de C

n°882465
joce
Architecte / Développeur principal
"BugHunter"
Posté le 25-10-2004 à 20:48:56  profilanswer
 

Code :
  1. int main(int argc, char* argv[])
  2. {
  3.    int age, taille, poids,sommeil, leger, sedent, sport;
  4.    char sexe,bebe;
  5.    puts("entrez votre age" );
  6.    scanf("%d",&age);
  7.    puts("entrez votre taille" );
  8.    scanf("%d", &taille);
  9.    puts("entrez votre poids" );
  10.    scanf("%d",&poids);
  11.    puts("quel est votre sexe? f pour femme h pour homme" );
  12.   scanf("%c",&sexe);
  13.    if(sexe=='f' || sexe=='F')
  14.       {
  15.          puts("etes vous enceinte ou allaitez vous?" );
  16.          scanf("%c",&bebe);
  17.        }
  18.    puts("combien d'heures restez vous au repos?" );
  19.    scanf("%d",&sommeil);
  20. puts("combien d'heures avez une activit\xe9 sedentaire?" );
  21. scanf("%d",&sedent);
  22. puts("combien d'heures avez une activit\xe9 legere (marche)?" );
  23.    scanf("%d",&leger);
  24. puts("combien d'heures avez une activit\xe9 sportive?" );
  25.    scanf("%d",&sport);
  26.    printf("votre ration calorique id\xe9ale est de: %f \n",rationCal(poids,taille,age,sexe,bebe,sommeil,sedent,leger,sport));
  27.    return(0);
  28. }


 
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);) :o
 
merci :D


Message édité par joce le 25-10-2004 à 20:49:13
mood
Publicité
Posté le 25-10-2004 à 20:48:56  profilanswer
 

n°882481
joce
Architecte / Développeur principal
"BugHunter"
Posté le 25-10-2004 à 21:10:25  profilanswer
 

pas d'idée :??:

n°882482
cris56
Posté le 25-10-2004 à 21:11:37  profilanswer
 

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'


Message édité par cris56 le 25-10-2004 à 21:12:35
n°882488
joce
Architecte / Développeur principal
"BugHunter"
Posté le 25-10-2004 à 21:14:08  profilanswer
 

mais pourquoi ca déconne uniquement au scanf("%c"... ?
parce que le \n est encore dans le buffer d'entrée ?


Message édité par joce le 25-10-2004 à 21:14:26
n°882490
Slay
Posté le 25-10-2004 à 21:14:51  profilanswer
 

je pense pas qu'un scanf pour un char soit fort conseillé quoiqu'il arrive :p

n°882492
WhatDe
Posté le 25-10-2004 à 21:16:29  profilanswer
 

Taz est en vacance ? [:cupra]

n°882494
Slay
Posté le 25-10-2004 à 21:17:49  profilanswer
 

je sais pas si getchar est ANSI ou non mais moi j'utiliserais
sexe=getchar();
fflush(stout);

n°882496
cris56
Posté le 25-10-2004 à 21:18:02  profilanswer
 

ba ou, verifie tes formats

n°882498
cris56
Posté le 25-10-2004 à 21:19:13  profilanswer
 

Slay > sert a quoi ton fflush(stdout); ?

n°882499
WhatDe
Posté le 25-10-2004 à 21:19:35  profilanswer
 

Slay a écrit :

je sais pas si getchar est ANSI ou non mais moi j'utiliserais
sexe=getchar();
fflush(stout);


Je disais pas ca pour toi  [:airforceone]

mood
Publicité
Posté le 25-10-2004 à 21:19:35  profilanswer
 

n°882502
Slay
Posté le 25-10-2004 à 21:21:12  profilanswer
 

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 ?

n°882504
cris56
Posté le 25-10-2004 à 21:23:59  profilanswer
 

'\n' et saute le si tu le veux
 
mais le fflush(stdout) n'est d'aucune utilité la

n°882505
pinguin007
a npe error
Posté le 25-10-2004 à 21:25:39  profilanswer
 

essaye  
 
scanf(\n"%c",&sexe);
 
je crois que c'est une sombre histoire de buffer
 
edit : scanf("\n%c",&sexe);


Message édité par pinguin007 le 25-10-2004 à 21:37:54

---------------
LoD 4 ever && PWC spirit|Le topak de l'iMP-450|inDATOUNEwe trust
n°882517
cris56
Posté le 25-10-2004 à 21:32:50  profilanswer
 

pour sauter le '\n' tu fais
while((c=fgetc(stdin)) != EOF && c != '\n');

n°882525
joce
Architecte / Développeur principal
"BugHunter"
Posté le 25-10-2004 à 21:40:54  profilanswer
 

et en faisant un fflush(stdin) juste avant ca peut marcher juste avant ? :D

n°882534
cris56
Posté le 25-10-2004 à 21:46:45  profilanswer
 

avant ou apres ca fera rien,  oubli fflush( stdin ) c'est pas bien, le standard ne definie aucun comportement pour ca

n°882546
pinguin007
a npe error
Posté le 25-10-2004 à 21:56:35  profilanswer
 

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 [:spamafote]


Message édité par pinguin007 le 25-10-2004 à 22:00:45

---------------
LoD 4 ever && PWC spirit|Le topak de l'iMP-450|inDATOUNEwe trust
n°882634
el muchach​o
Comfortably Numb
Posté le 25-10-2004 à 23:29:30  profilanswer
 

joce > J'espère que tu mettras ce sondage en ligne, qu'on puisse s'amuser un peu avec tes serveurs :D

n°882871
chrisbk
-
Posté le 26-10-2004 à 10:11:01  profilanswer
 

fflush(stdin);
.
.
.
.
.
.
.
.
.
.
.
.
[:itm]


---------------
NP: HTTP Error 764 Stupid coder found
n°886636
Sve@r
Posté le 30-10-2004 à 20:30:46  profilanswer
 

chrisbk a écrit :

fflush(stdin);
.
.
.
.
.
.
.
.
.
.
.
.
[:itm]


J'avais déjà soulevé ce pb dans le sujet "De l'utilité du fflush"
http://forum.hardware.fr/hardwaref [...] 6121-1.htm

n°886649
Taz
bisounours-codeur
Posté le 30-10-2004 à 21:15:34  profilanswer
 

pinguin007 a écrit :

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 [:spamafote]

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'.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  question conne de C

 

Sujets relatifs
Question Simple AccessPtite question de calcul...
question sur les sessions[Ada] Question sur les packages
[html] question basique sur location.replacequestion bête
[C++] Question sur les boites de dialogueQuestion tout bête de passage par référence
Question sur les CMSPoser une question sous dos et obtenir un paramètre en retour?
Plus de sujets relatifs à : question conne de C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR