Partage
  • Partager sur Facebook
  • Partager sur Twitter

la boucle do...while

    6 décembre 2019 à 14:15:59

    Bonjour à tous je suis un débutant en programmation C. Ma boucle ci-dessous ne fonctionne pas comme j'espérais c'est à dire répéter les instructions de la boucle l'une après l'autre dans chaque itération. Au lieu de cela,   à partir de la deuxième itération, seules la première et la troisième instruction qui s'exécutent et au même moment.  la deuxième et la quatrième instruction ne s'exécutent plus (voir image plus bas). Aidez SVP 

    #include <stdio.h>
    #include <stdlib.h>
    int Qte, qt;
    char nom, ok ;
    char x;
    
    void main()
    {
    int reponse;
    do{
    reponse=0;
    printf("entrez le nom de l’article\n");
    
    scanf("%c",&nom);
    
    printf("entrez la quantité de l’article\n");
    
    scanf("%d",&Qte);
    printf("voulez vous enregistrer un autre article?\n");
    scanf("%d",&reponse);
    }while(reponse==1);
    }
    

    • Partager sur Facebook
    • Partager sur Twitter
      6 décembre 2019 à 16:41:25

      Salut. C'est dû à un problème subtil que tu verras plus tard dans le cours, tu peux faire des recherches sur "buffer dans le langage C" si tu veux comprendre maintenant. En attendant tu peux régler ton problème ici en mettant un espace avant "%c", comme ça

      scanf(" %c",&nom); //il y a bien un espace



      • Partager sur Facebook
      • Partager sur Twitter
        8 décembre 2019 à 5:03:07

        @kulturman:
        C'est plus qu'une question de vidage de "buffer". C'est la validation de ce qu'on lit.
        Dans le cours de Mathieu Nebra sur le langage C, il y a la section suivante:
        «La saisie de texte sécurisée»
        Même si GSPM est novice, il n'est pas mauvais qu'il prenne conscience dès maintenant que les utilisateurs éventuels de ses programmes ne seront pas toujours des utilisateurs gentils qui vont entrer exactement ce que le programme attend.
        Il y aura des utilisateurs lambda qui seront malhabiles et pire, des utilisateurs malveillants qui voudront foutre la m... dans ses programmes.
        Une bonne partie du code qu'on écrit est l'interface avec les humain. On ne doit rien prendre pour acquis.
        • Partager sur Facebook
        • Partager sur Twitter

        Le Tout est souvent plus grand que la somme de ses parties.

          8 décembre 2019 à 12:44:24

          Je ne pense pas que ça soit important avec le niveau qu'il a, ça ne fera que l'embrouiller tout au plus.

          -
          Edité par kulturman 8 décembre 2019 à 20:22:52

          • Partager sur Facebook
          • Partager sur Twitter

          la boucle do...while

          × 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