Scanf et getchar qui fonctionne aléatoirement...?
Résolu/Fermé
kevdaig
Messages postés
16
Date d'inscription
dimanche 31 août 2014
Statut
Membre
Dernière intervention
22 février 2016
-
8 févr. 2015 à 03:02
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 9 févr. 2015 à 23:08
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 9 févr. 2015 à 23:08
A voir également:
- Scanf java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Java décompiler - Télécharger - Langages
- Waptrick jeux java itel - Forum Jeux vidéo
1 réponse
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
8 févr. 2015 à 19:36
8 févr. 2015 à 19:36
Bonjour,
printf("%s", Msg);
Comment est défini Msg ?
Qu'entends-tu par "nombre invalide" ? Un nombre en dehors de la plage admise ? Ou une lettre par exemple ?
Sinon, là en l'état ce n'est pas bon. A aucun moment tu indiques EntierValide=TRUE; donc jamais tu ne pourras sortir de ta boucle.
Cdlt,
printf("%s", Msg);
Comment est défini Msg ?
Qu'entends-tu par "nombre invalide" ? Un nombre en dehors de la plage admise ? Ou une lettre par exemple ?
Sinon, là en l'état ce n'est pas bon. A aucun moment tu indiques EntierValide=TRUE; donc jamais tu ne pourras sortir de ta boucle.
Cdlt,
9 févr. 2015 à 22:27
Quand je fais le debug pas à pas, dans mon mon scanf me retourne le code ASCII "2" et si j'utilise un getchar à la place, cela me retourne le code ASCII "10"...mais je n'ai rien tapé au clavier c'est dingue!
Pour ton info, Msg n'est qu'une chaine de caractère qui arrive de cette fonction:
9 févr. 2015 à 23:08
En tout cas le else est vraiment important.
De plus, autre erreur :
EntierValide==FALSE
Tu mets FALSE dans EntierValide et c'est EntierValide que tu retournes...
Il faut dissocier ces variables : 1 pour la boucle, l'autre pour la variable. Ou alors si tu n'en veux qu'une, il faut mettre la condition aussi dans la boucle while...
Après, pour le getchar() c'est normal qu'il retourne un 10. Mais j'en ai pas parlé vu que ça ne faisait pas partie de ton post initial. Il faut savoir qu'au moment du scanf("%d",&EntierValide); tu appuies sur la touche entrée ('\n') pour valider le nombre saisi. Ainsi il y a '\n' (qui vaut 10) qui traine dans le buffer clavier. Si tu fais un getchar(), ce dernier va récupérer le 10.
Cdlt,