IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Contrôle d'un float


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Par défaut Contrôle d'un float
    Bonjour,
    Existe-t-il une façon de savoir si prix saisi par l'utilisateur est un float?
    Idem pour un int?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      printf("Prix: ");
               scanf("%f", &prix);

  2. #2
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 142
    Par défaut
    Salut,

    La fonction scanf te retourne une valeur de retour qui est de 0 ou 1.
    Si elle vaut 0 c'est qu'elle n'a pas trouver ce que tu lui as demandé (en loccurence, les %lf %ld ou autre.).

    Donc pour savoir si l'utilisateur a bien saisie un float : tu peux procéder comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while ( (scanf("%f", &prix)) != 0 )
    {
        printf(" (Re) Saisir le prix :\n");
    };
    Mais il me semble que si l'utilisateur rentre 12, il sera considérer comme étant 12.00 par le compilateur ce qui en général ne pose pas de problème.

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Par défaut
    Merci

  4. #4
    Membre éclairé
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Par défaut
    Pour scanf("%s")

    Je crois qu'il n'y aura pas de problème puisque tout ce qu'on tape peu être considéré comme chaîne de caractères. N'est-ce pas?

  5. #5
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 142
    Par défaut
    Effectivement, mais il reste les caractère d'échappement qui je crois ne peuvent être saisie au clavier.

  6. #6
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Citation Envoyé par FunK92 Voir le message
    Donc pour savoir si l'utilisateur a bien saisi un float : tu peux procéder comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while ( (scanf("%f", &prix)) != 0 )
    {
        printf(" (Re) Saisir le prix :\n");
    }
    Si avec ça, je tape 'a' (ou n'importe quel autre caractère qui ne peut figurer dans l'expression d'un float ...), on commence une jolie boucle infinie ... En plus, tu voulais écrire while ( (scanf("%f", &prix)) == 0 ) je pense ...

    yo_haha : Pour s'assurer que l'utilisateur n'a pas tapé n'importe quoi, il faut faire la saisie d'une ligne complète (le plus simple c'est d'utiliser fgets) suivie d'une conversion de la chaîne lue vers le type souhaité. Tester si la conversion a réussi.

    Lire une ligne avec fgets
    Conversion des chaînes

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Codes de contrôle des imprimantes
    Par hetzel dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 21/03/2003, 17h17
  2. probleme d'insertion d'un Float
    Par neness dans le forum Débuter
    Réponses: 3
    Dernier message: 07/01/2003, 12h32
  3. [ActiveX] Propriété "Picture" dans un contrôle util
    Par Ricou13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 14/12/2002, 15h59
  4. [contrôle] dbDateTimePicker ???
    Par Fizgig dans le forum Composants VCL
    Réponses: 2
    Dernier message: 28/11/2002, 15h45
  5. [Kylix] Contrôle DBGrid
    Par KThrax dans le forum EDI
    Réponses: 1
    Dernier message: 10/05/2002, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo