Partage
  • Partager sur Facebook
  • Partager sur Twitter

saisie sécurisée avec scanf

Sujet résolu
    24 juillet 2021 à 18:08:09

    • Salut j suis un débutant en prog

    J'essaie d'écrire le code d'une calculatrice basique qui attendra une  entrée formatée suivant la notation polonaise inverse  c'est-à-dire les opérandes d'une opération seront entrés avant l'opérateur. J'ai donc fais un test pour voir la manière dont j peux sécuriser l'entrée

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "fonction.h"
    #include "calculatrice.h"
    int main()
    {
      int a=0,b=0;
      char c;
      scanf(" %d%d %[+]",&a,&b,&c);
      printf("%d %d %c",a,b,c);
          return 0;
    }



    Au niveau du scanf j'ai utiliser une expression régulière pour limiter l'utilisateur au choix de l'operateur(j sais c'est pas très pratique mais ce n'est qu'un test)

    A l'execution apres avoir entré 4 5 + je remarque qu'à l'affichage 5 n'est pas affecté à la variable b

    Cependant la valeur de retour de scanf (3) indique que la conversion a belle et bien réussie

    Svp d'où vient l'erreur?

    -
    Edité par AbelAbouka 24 juillet 2021 à 18:29:32

    • Partager sur Facebook
    • Partager sur Twitter
      24 juillet 2021 à 18:23:53

      Bonjour,

      Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
      Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

      Pour plus d'informations, nous vous invitons à lire les règles générales du forum

      Merci de colorer votre code à l'aide du bouton Code

      Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Code de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: cpp;">Votre code ici</pre>.

      Merci de modifier votre message d'origine en fonction.

      Liens conseillés

      • Partager sur Facebook
      • Partager sur Twitter
        24 juillet 2021 à 18:50:54

        Dans scanf quand tu utilises les crochets, %[?] tu dois affecter la saisie à une chaîne de caractère comme pour %s
        • Partager sur Facebook
        • Partager sur Twitter
          24 juillet 2021 à 19:19:02

          les operateurs sont des caractères donc +-/* est une chaine de caractère. N'est ce pas?

          scanf(" %d%d %[+-/*]",&a,&b,&c);

          Mais ça ne marche toujours pas

          • Partager sur Facebook
          • Partager sur Twitter
            24 juillet 2021 à 20:39:48

            Mais c est un caractère, pas une chaine de caractères.

            'c' est un caractère, "c" estune chaine de caractères. '+', '-', '*', '/' sont des caractères, "+-*/" est une chaine de caractères.

            • Partager sur Facebook
            • Partager sur Twitter

            Il y a ceux qui font des sauvegardes, et ceux qui n'ont pas encore eu d'incident....

              24 juillet 2021 à 21:13:57

              % crochets  :  %[...] fait l'affectation a un tableau de char comme le ferait %s 

              Ce qui veut dire que tu ne peux pas faire l'affectation à une variable de type char, ta variable de destination doit être un tableau de char comme pour %s sinon faut pas utiliser les crochets %[?] 

              -
              Edité par Zero.c 24 juillet 2021 à 21:15:08

              • Partager sur Facebook
              • Partager sur Twitter
                24 juillet 2021 à 21:24:47

                Merci pour vos éclaircissements....A toute
                • Partager sur Facebook
                • Partager sur Twitter

                saisie sécurisée avec scanf

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                • Editeur
                • Markdown