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
A voir également:
- Problème sur un prog pourtantsimple C
- Robot prog - Télécharger - Édition & Programmation
- Clear prog - Télécharger - Sécurité
- Prog DVB ne fonctionne plus ✓ - Forum TV & Vidéo
- Aide pr premier pas en prog ✓ - Forum Programmation
- Avec quel prog j'ouvre .pdf? - Forum PDF
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 :
Google is your friend
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
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 ! :)
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 :-).
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 :-).