Fonction scanf ???
Résolu/Fermé
gasasaaa
Messages postés
640
Date d'inscription
lundi 31 mai 2010
Statut
Membre
Dernière intervention
14 septembre 2018
-
25 avril 2011 à 09:10
gasasaaa Messages postés 640 Date d'inscription lundi 31 mai 2010 Statut Membre Dernière intervention 14 septembre 2018 - 25 avril 2011 à 15:07
gasasaaa Messages postés 640 Date d'inscription lundi 31 mai 2010 Statut Membre Dernière intervention 14 septembre 2018 - 25 avril 2011 à 15:07
A voir également:
- Fonction scanf ???
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Fonction miroir - Guide
- Fonction remplacer word - Guide
4 réponses
informaticienSAP
Messages postés
119
Date d'inscription
jeudi 21 avril 2011
Statut
Membre
Dernière intervention
17 décembre 2011
20
Modifié par informaticienSAP le 25/04/2011 à 11:44
Modifié par informaticienSAP le 25/04/2011 à 11:44
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);
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
25 avril 2011 à 12:12
25 avril 2011 à 12:12
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,
gasasaaa
Messages postés
640
Date d'inscription
lundi 31 mai 2010
Statut
Membre
Dernière intervention
14 septembre 2018
48
25 avril 2011 à 11:59
25 avril 2011 à 11:59
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...
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
25 avril 2011 à 12:08
25 avril 2011 à 12:08
Attention à ne pas confondre décimal avec base décimal...
%d, c'est pour les entiers décimaux (entrés en base 10) signés.
%d, c'est pour les entiers décimaux (entrés en base 10) signés.
gasasaaa
Messages postés
640
Date d'inscription
lundi 31 mai 2010
Statut
Membre
Dernière intervention
14 septembre 2018
48
25 avril 2011 à 12:34
25 avril 2011 à 12:34
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 :))
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
25 avril 2011 à 12:40
25 avril 2011 à 12:40
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,
gasasaaa
Messages postés
640
Date d'inscription
lundi 31 mai 2010
Statut
Membre
Dernière intervention
14 septembre 2018
48
25 avril 2011 à 13:38
25 avril 2011 à 13:38
oui mais ou dois-je le placer ?
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
25 avril 2011 à 13:43
25 avril 2011 à 13:43
Bah dans ton code...
char nom[20]; à la place de ton int nom;
scanf("%19s",nom); à la place de ton scanf("%d",&nom);
char nom[20]; à la place de ton int nom;
scanf("%19s",nom); à la place de ton scanf("%d",&nom);
gasasaaa
Messages postés
640
Date d'inscription
lundi 31 mai 2010
Statut
Membre
Dernière intervention
14 septembre 2018
48
25 avril 2011 à 15:07
25 avril 2011 à 15:07
Merci !
Ca a enfin marché !
Bonne journée tout le monde et merci pour votre aide !
Ca a enfin marché !
Bonne journée tout le monde et merci pour votre aide !
25 avril 2011 à 12:06
scanf("%19s", nom); /*il ne faut pas mettre d'esperluette devant, même si le compilateur ne râle pas*/