Problème sur un prog pourtantsimple C
mickmac
Messages postés
447
Statut
Membre
-
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Voilà quelque chose cloche dans mon programme mais je vois pas du tout quoi;
Ca saute en plus et ça affiche pas mon 3eme printf mais je vois pas pourquoi...
Si vous pouvez m'aider ça serait avec plaisir
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char x=0;
int y=0;
char z=0 ;
printf("choisissez un entier\n");
scanf("%d",&x);
printf("choisissez un réel\n");
scanf("%e",&y);
printf("choisissez une lettre\n");
scanf("%c",&z);
printf("vous avez choisi:\n %d \n %e \n %c \n",x,y,z);
return 0;
}
merci
Voilà quelque chose cloche dans mon programme mais je vois pas du tout quoi;
Ca saute en plus et ça affiche pas mon 3eme printf mais je vois pas pourquoi...
Si vous pouvez m'aider ça serait avec plaisir
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char x=0;
int y=0;
char z=0 ;
printf("choisissez un entier\n");
scanf("%d",&x);
printf("choisissez un réel\n");
scanf("%e",&y);
printf("choisissez une lettre\n");
scanf("%c",&z);
printf("vous avez choisi:\n %d \n %e \n %c \n",x,y,z);
return 0;
}
merci
3 réponses
-
Bonjour,
scanf("%e",&y);
Attention, tu as mis int y; au lieu de double y pour un réel.
De plus, je te conseille de mettre %f au lieu de %e, sinon, le nombre s'affichera en forme exponentielle.
Pour les entiers, je te conseille d'utiliser int plutôt que char (même si c'est juste).
De plus, il faut faire attention avec les scanf. Il y a très souvent le '\n' qui vient se stocker dans le buffer clavier et qui sera lu avec le scanf("%c",...). Il faut donc vider le buffer.
Par exemple :#include <stdio.h> int main(void) { int x; double y; char z; printf("choisissez un entier\n"); scanf("%d",&x); printf("choisissez un réel\n"); scanf("%lf",&y); getchar(); /*on lit le '\n' précédemment stocké*/ printf("choisissez une lettre\n"); scanf("%c",&z); printf("vous avez choisi:\n %d \n %f \n %c\n",x,y,z); return 0; }
Google is your friend -
Faut mettre %d dans le scanf et le printf du nombre réel.
"Moi je dis que le plus fort entre l'hippopotame et l'éléphant, c'est encore le rhinocéros !" -
Salut
Ton code est vraiment pas génial, déjà ça ne sert strictement à rien de mettre la valeur 0 sur une valeur char ! Elle est sensé prendre la valeur d'une lettre donc ne l'initialise pas !
Sauf que justement cette variable prend une lettre et tu demande d'entré un entier donc je te fais un bref résumé :
Pour un entier :
int a; (que tu peux initialiser parfois à 0)
scanf("%d", &a);
Pour une lettre :
char a;
scanf("%c", &a);
Pour un nombre décimal :
double a;
scanf("%lf", &a);
Déjà essaie avec sa ! :)-
-
-
-
Certes, mais quand on débute en C et qu'on met un char pour désigner un entier. Le risque d'overflow n'est pas loin ^^.
Je pense que lorsqu'on débute, il n'y a que deux types à retenir en C pour les nombres :
int / double.
Par la suite, on pourra s'orienter vers char / short / int / long / long long (ISO C99) puis float / double / long double (et d'autres que j'ai sûrement oublié ^^).
Enfin ce n'est que mon avis :-). -
-