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 :

scanf et les double


Sujet :

C

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 491
    Points : 172
    Points
    172
    Par défaut scanf et les double
    Hello,
    Lorsque je fait un scanf sur un double, et que l'utilisateur (non averti) entre par exemple 1,333 au lieu de 1.333, ca bug...
    Comment puis-je vérifier que l'utilisateur a bien entré un point et non une virgule pour séparer les décimales?

    Merci d'avance.

  2. #2
    Membre averti Avatar de Jack_serious
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    350
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 350
    Points : 396
    Points
    396
    Par défaut
    Deja maintes et maintes fois conseille.

    Ne pas utiliser scanf pour les saisies utilisateur.

    JUSTEMENT a cause de l'utilisateur non-averti:



    Serieusement, scanf est prevu pour recevoir une entree formatee.
    Or on ne sait jamais ce que ce cher user va taper comme c***ries sur son clavier.

    Donc, utilisation d'une autre fonction.

    La fonction la plus recommandee pour les saisies utilisateur est fgets(),

    Sinon pour quand meme repondre a ta question, pour verifier si il n'a pas tape une virgule dans son code, essaie strstr().

    C'est une fonction pour localiser une sous-chaine.

    Mais dans l'ideal, fgets(), puis tu parses toi-meme ta ligne, et apres tu lui applique le traitement voulu. (Ou tu ponds un joli message d'erreur courtois ("ACHETES TOI DES DOIGTS OU APPRENDS A LIRE"), qui est tellement plus professionel qu'un resultat douteux).

    Sur ce, bonne journee.
    Don't worry, be serious.
    La vie est courte. Prenez votre temps.

    Jack.

  3. #3
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: scanf et les double
    Citation Envoyé par vinzzzz
    Hello,
    Lorsque je fait un scanf sur un double, et que l'utilisateur (non averti) entre par exemple 1,333 au lieu de 1.333, ca bug...
    Surtout ne donne pas trop de détails, ça pourrait aider à comprendre.
    Comment puis-je vérifier que l'utilisateur a bien entré un point et non une virgule pour séparer les décimales?
    Comme il a été expliqué 14.000 fois (tu n'es pas nouveau ici), scanf() est une fonction difficile à maitriser.

    http://emmanuel-delahaye.developpez....tes.htm#saisie
    http://emmanuel-delahaye.developpez....s.htm#fichiers

    Les informaticiens préfèrent les choses simples et éprouvées comme fgets() + strtod(), par exemple. Tu peux te servir du deuxième paramètre pour vérifier que le 'dernier+1' caractère analysé n'est pas une ',', par exemple...

    Bien lire la doc de strtod() (et ne pas passer une valeur indéterminée à la fonction).
    Pas de Wi-Fi à la maison : CPL

  4. #4
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 491
    Points : 172
    Points
    172
    Par défaut
    OK merci de vos réponses et désolé hier j'ai pas pris le temps de regarder sur le forum avant de poster.

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

Discussions similaires

  1. scanf pour les debutants pas si sûr...
    Par wimbo dans le forum C
    Réponses: 8
    Dernier message: 29/04/2006, 13h28
  2. scanf et pointeur double
    Par badman_nx dans le forum C
    Réponses: 7
    Dernier message: 23/04/2006, 02h04
  3. [XSLT]Enlever les double espaces
    Par totoen dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/12/2005, 14h43
  4. Probleme avec les double Liste chainees
    Par BernardT dans le forum Langage
    Réponses: 1
    Dernier message: 12/07/2005, 18h22
  5. [VBA-E] Effacer les doubles dans 1 colonne grace à une macro
    Par Stef.proxi dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/08/2004, 16h44

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