Partage
  • Partager sur Facebook
  • Partager sur Twitter

Recuperation scanfS

dans le cas de deux scanf...

    2 décembre 2005 à 0:54:58

    {
      char age = 0, doigts = 0; // Initialisation de toutes les variables.
      printf("Bonjour , \nVeuillez entrez votre age : \n") ;
      scanf("%d", &age);
      printf("\nHehehe tu as donc %d ans ! \n\nEt combien as-tu de doigt? \n", age ) ;
      scanf("%d", &doigts);
      printf("Ohhhhhhhh tu as donc %d ans et %d doigts !\n", age, doigts );
      system("PAUSE");     
      return 0;
    }


    Bon voila le code...
    Je récupère Deux variables, à l'aide de deux scanf, sauf que ma variable "age", dans le deuxieme printf renvoie 0... o_O
    Je cherche depuis pas mal de temsp mais je trouve vriament pas...
    ( Oui je sais c'est vraiment tout con... Un peu d'indulgence :euh: )
    • Partager sur Facebook
    • Partager sur Twitter
      2 décembre 2005 à 7:04:53

      Essaye avec "int age, doigts;" au lieu d'un char...
      pour char, on utilise %C et non %d.
      • Partager sur Facebook
      • Partager sur Twitter
        2 décembre 2005 à 8:50:51

        C'est le problème que j'ai soulevé ici...

        Il y a un problème de tampon.

        Tu réponds à la premier question, et tu validees par "entrée".

        Ceci implique que le "entrée" reste en tampon, et sera attribué à la prochaine demande d'un scanf...

        Pour palier à cela, utilise une des fonctions gets/fgets/getchar et compagnie :)
        • Partager sur Facebook
        • Partager sur Twitter
          2 décembre 2005 à 10:55:38

          Citation : YanisLiadon

          Ceci implique que le "entrée" reste en tampon, et sera attribué à la prochaine demande d'un scanf...


          il à dit que c'était age et pas doigt qui était vide. ;)
          • Partager sur Facebook
          • Partager sur Twitter
            2 décembre 2005 à 11:01:30

            Essaye avec un int ou un long et ça roule comme sur des roulettes (logique tu va me dire lol :D ).
            • Partager sur Facebook
            • Partager sur Twitter
              2 décembre 2005 à 11:19:03

              Autant pour moi :)

              Le problème se pose principalement lorsqu'on se sert, non pas de la fonction system() mais un scanf pour faire patienter...

              Genre "Appuyez sur "f" pour terminer"...

              Dans certains cas, le dernier "LF" (code de "Enter") est pris en compte... ce qui ne laisse pas le temps de voir le joli message :)

              Edit : Bon j'ai pris un peu de temps pour adapter l'exemple pour que ca ne marche pas comme on le souhaite (et surtout que ca fasse ce que je tente de vous démontrer ;))

              #include <stdio.h>
              #include <stdlib.h>

              int main(int argc, char *argv[])
              {
                  int age = 0, doigts = 0; // Initialisation de toutes les variables.
                  char carac;
                printf("Bonjour , \nVeuillez entrez votre age : \n") ;
                scanf("%d", &age);
                printf("\nHehehe tu as donc %d ans ! \n\nEt combien as-tu de doigt? \n", age ) ;
                scanf("%d", &doigts);

                printf("Ohhhhhhhh tu as donc %d ans et %d doigts !\n", age, doigts );
                printf("\nAppuyez sur une touche pour continuer\n");
                scanf("%c", &carac);
                return 0;
              }


              Testez... et vous verrez... j'ai juste remplacer la fonction system()
              • Partager sur Facebook
              • Partager sur Twitter
                2 décembre 2005 à 18:37:25

                En fait ca a l'air d'etre juste un problème d type de variable..
                Ca marche avec un long ou un int ( comme expliqué dans les messages précédents... ) mais j'aimerais bien comprendre pourquoi...
                Si quelqu'un pouvait m'expliquer :D
                ( Sachant que j'ai déjà du mal à envisager la réponse de YanisLiadon... ^^ je viens de commencer les cours de M@teo ^^' )
                • Partager sur Facebook
                • Partager sur Twitter
                  2 décembre 2005 à 19:15:13

                  Test avec un %s YanisLiadon, mais c'est différent de l'appel system ce que tu veux faire, car cela implique la saisie d'un caractère et appuyer sur entrée, enfin si c'est ce que tu veux faire.
                  Sinon Mattydread c'est assez logique de "typer" ça variable avec le bon type, quand tu va te servir d'un entier tu va utiliser un int, qi tu veux utiliser un réel tu va te servir d'un float, et d'un très grand nombre tu va prendre un double ou un long, et quand tu a besoin d'un caractere tu va prendre un char. c'est lié au system qui va allouer la place nécessaire aux variable, c'est donc indispensable de bien "typer" sa variable ^^ .
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Recuperation scanfS

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown