Langage C, vérifier saisie numérique
Fermé
sofianrob
Messages postés
1
Date d'inscription
dimanche 29 août 2010
Statut
Membre
Dernière intervention
29 août 2010
-
29 août 2010 à 19:03
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 29 août 2010 à 21:31
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 29 août 2010 à 21:31
A voir également:
- Langage C, vérifier saisie numérique
- Langage ascii - Guide
- Verifier un lien - Guide
- Pavé numérique bloqué - Guide
- Saisie gestuelle iphone - Guide
- Clavier numérique bloqué - Guide
2 réponses
loupius
Messages postés
697
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
31 décembre 2017
148
29 août 2010 à 20:48
29 août 2010 à 20:48
Tu as plusieurs problèmes:
- la boucle vient du fait qu'il est nécessaire de vider le buffer avant toute saisie,
- d'autre part si tu rentres une lettre , 'scanf' va le traduire en float... c'est-à-dire zéro! Donc c'est comme si tu avais saisi '0'.
En passant, il vaut mieux travailler avec des 'double' qu'avec des 'float'.
Bonne continuation.
- la boucle vient du fait qu'il est nécessaire de vider le buffer avant toute saisie,
- d'autre part si tu rentres une lettre , 'scanf' va le traduire en float... c'est-à-dire zéro! Donc c'est comme si tu avais saisi '0'.
En passant, il vaut mieux travailler avec des 'double' qu'avec des 'float'.
Bonne continuation.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
29 août 2010 à 21:31
29 août 2010 à 21:31
Je plussoie le commentaire de loupis, auquel je rajoute :
Pour vérifier s'il s'agit bien d'un nombre, tu peux utiliser la fonction strtol ou sinon avec scanf tu fais une boucle while jusqu'à ce que scanf te renvoie 1. Bien sûr, il ne faudra pas oublier de vider le buffer clavier.
Cdlt,
Pour vérifier s'il s'agit bien d'un nombre, tu peux utiliser la fonction strtol ou sinon avec scanf tu fais une boucle while jusqu'à ce que scanf te renvoie 1. Bien sûr, il ne faudra pas oublier de vider le buffer clavier.
Cdlt,
29 août 2010 à 21:29
Si tu rentres une lettre, scanf ne fera pas la conversion. Il ne le traduira pas en float, donc c'est comme s'il n'y a avait pas eu de scanf. Par contre le retour de la fonction scanf renverra 0 pour dire qu'aucune conversion a été faite.