Fonction scanf ???
Résolu
gasasaaa
Messages postés
644
Date d'inscription
Statut
Membre
Dernière intervention
-
gasasaaa Messages postés 644 Date d'inscription Statut Membre Dernière intervention -
gasasaaa Messages postés 644 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Pour commencer, je programme en language c, le plus simple. J'utilise code::blocks. j'ai suivi quelques tutos (enfin... 1 tuto) sur le site du zéro, et je commence petit à petit à comprendre les bases. j'ai donc voulu créer mon premier logiciel, sans que personne ne me dise quoi faire ou comment faire. C'est un logiciel tout simple, qui fait semblant de collecter des informations sur vous pour vous dire, à la fin, qu'il se fout de votre gueule (que voulez-vous, j'avais besoin d'une idée :D)
Bref, je posais une question avec printf, suivi d'un scanf qui enregistrait la réponse, mais que je n'utilisait plus avec le programme, c'etait juste pour faire semblant. au début, tout a bien marché, il a fait une pose au premier scanf, j'ai écrit mon nom, j'ai appuyer sur entrée, tout marchait. Puis après, au lieu de m'afficher la question suivante et de s'arreter au scanf suivant, il a tout sauté et m'a tout mis d'un seul coup, sans que les scanfs soient appliqués... Voici le programme en question, quelqu'un peut m'aider ? :
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int age = 0, nom = 0, vide = 0;
double poids = 0;
printf("bonjour, je suis votre ordinateur, mais je suis aussi un medium. Je vais essayez de représentez une image de vous par rapport aux informations que vous me donner... Pour commencez, quel est votre nom ?");
scanf("%d", &nom);
printf("merci. Maintenant, quel est votre age ?");
scanf("%d", &age);
printf("merci. Maintenant, quel est votre poids ? Le programme etant anglais, veuillez mettre la virgule avec un point");
scanf("%lf", &poids);
printf("maintenant, je suis en mesure de dire votre taille, votre morphologie etc. Je parie que vous etes... appuyez n'importe ou puis sur entrée pour continuer");
scanf("%d", &vide);
printf("ah ah ! vous y avez cru, hein ? non plus serieusement, c'est mon premier programme, je vais quand meme pas vous sortir des calculs supercompliqués :D... Enfin, du moins, pas tout de suite :D En fait, je sais juste que vous avez %d et que vous faites %f", age, poids);
return 0;
}
Pour commencer, je programme en language c, le plus simple. J'utilise code::blocks. j'ai suivi quelques tutos (enfin... 1 tuto) sur le site du zéro, et je commence petit à petit à comprendre les bases. j'ai donc voulu créer mon premier logiciel, sans que personne ne me dise quoi faire ou comment faire. C'est un logiciel tout simple, qui fait semblant de collecter des informations sur vous pour vous dire, à la fin, qu'il se fout de votre gueule (que voulez-vous, j'avais besoin d'une idée :D)
Bref, je posais une question avec printf, suivi d'un scanf qui enregistrait la réponse, mais que je n'utilisait plus avec le programme, c'etait juste pour faire semblant. au début, tout a bien marché, il a fait une pose au premier scanf, j'ai écrit mon nom, j'ai appuyer sur entrée, tout marchait. Puis après, au lieu de m'afficher la question suivante et de s'arreter au scanf suivant, il a tout sauté et m'a tout mis d'un seul coup, sans que les scanfs soient appliqués... Voici le programme en question, quelqu'un peut m'aider ? :
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int age = 0, nom = 0, vide = 0;
double poids = 0;
printf("bonjour, je suis votre ordinateur, mais je suis aussi un medium. Je vais essayez de représentez une image de vous par rapport aux informations que vous me donner... Pour commencez, quel est votre nom ?");
scanf("%d", &nom);
printf("merci. Maintenant, quel est votre age ?");
scanf("%d", &age);
printf("merci. Maintenant, quel est votre poids ? Le programme etant anglais, veuillez mettre la virgule avec un point");
scanf("%lf", &poids);
printf("maintenant, je suis en mesure de dire votre taille, votre morphologie etc. Je parie que vous etes... appuyez n'importe ou puis sur entrée pour continuer");
scanf("%d", &vide);
printf("ah ah ! vous y avez cru, hein ? non plus serieusement, c'est mon premier programme, je vais quand meme pas vous sortir des calculs supercompliqués :D... Enfin, du moins, pas tout de suite :D En fait, je sais juste que vous avez %d et que vous faites %f", age, poids);
return 0;
}
A voir également:
- Fonction scanf ???
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Fonction somme excel - Guide
4 réponses
scanf("%d", &nom);
%d , c'est un décimal.
Si il attend un numérique et que tu lui donnes de l'alphabétique ca ne va pas marcher.
Ici le tableau des valeurs % attendues par scanf :
http://membres.multimania.fr/dancel/c/c60_40.htm
A+
ps:
%d , c'est un décimal.
Si il attend un numérique et que tu lui donnes de l'alphabétique ca ne va pas marcher.
Ici le tableau des valeurs % attendues par scanf :
http://membres.multimania.fr/dancel/c/c60_40.htm
A+
ps:
char nom[20]; scanf("%c", &nom); ou scanf("%19s", &nom);
Bonjour,
L'erreur provient bel et bien des scanf comme signalé par InformaticienSAP.
Tu mets : int nom. Autrement dis, ton compilateur voudra que l'utilisateur tape un entier, alors que tu souhaites probablement du texte... Le scanf va donc être ignoré. Et le buffer clavier ne sera pas vidé...
Repense bien le type de tes variables, et utilise les bons scanf.
Par exemple, pour le nom, ça sera : char nom[20]; scanf("19s",nom);
Cdlt,
L'erreur provient bel et bien des scanf comme signalé par InformaticienSAP.
Tu mets : int nom. Autrement dis, ton compilateur voudra que l'utilisateur tape un entier, alors que tu souhaites probablement du texte... Le scanf va donc être ignoré. Et le buffer clavier ne sera pas vidé...
Repense bien le type de tes variables, et utilise les bons scanf.
Par exemple, pour le nom, ça sera : char nom[20]; scanf("19s",nom);
Cdlt,
je veux bien te croire, mais ce n'est pas ce qui est écrit dans mon tutoriel : https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c/14118-un-monde-de-variables
va à l'onglet récupérer une saisie (ctrl+f récupérer une saisie)
et là on me dit que c'est %lf pour les décimaux et %d pour les entiers.
Et puis meme, télécharge le texte et eessaie de l'exécuter, tu verras qu'il ne me demande rien du tout, meme pas un décimal...
va à l'onglet récupérer une saisie (ctrl+f récupérer une saisie)
et là on me dit que c'est %lf pour les décimaux et %d pour les entiers.
Et puis meme, télécharge le texte et eessaie de l'exécuter, tu verras qu'il ne me demande rien du tout, meme pas un décimal...
Ouh là ! J'ai pas compris comment la corriger, mais j'ai trouvé ou etais l'erreur : je rentre du texte là ou le programme veut un chiffre, donc je fais tout sauter... Comment puis créer une variante ou je peux enregistrer du texte alors ? (je suis un débutant... excusez-moi :))
J'ai pas compris comment la corriger, mais j'ai trouvé ou etais l'erreur : je rentre du texte là ou le programme veut un chiffre, donc je fais tout sauter
Beh oui, c'est ce que je viens de dire ^^.
Pour la réponse, je te l'ai donné aussi dans le précédent post...
Je te redonne : char nom[20]; scanf("19s",nom);
Cdlt,
Beh oui, c'est ce que je viens de dire ^^.
Pour la réponse, je te l'ai donné aussi dans le précédent post...
Je te redonne : char nom[20]; scanf("19s",nom);
Cdlt,
scanf("%19s", nom); /*il ne faut pas mettre d'esperluette devant, même si le compilateur ne râle pas*/