Partage
  • Partager sur Facebook
  • Partager sur Twitter

dite adieu a" system("PAUSE");"

    18 février 2006 à 10:10:48

    Je sais pas si il y a eu un autre topic mais vous savez certainement que :
    system("PAUSE");

    Ne marche qu'avec Windows et ne permet donc pas de faire un programme vraiment portable, remplacez le par :
    printf("Ce que vous voulez comme message de fin");
    getch();

    Avantage :
    • vos programme sont portable,
    • vous pouvez personnalisez le message de pause

    Voila.
    (Excusez moi si il y a deja un topic sur ce sujet)
    • Partager sur Facebook
    • Partager sur Twitter
      18 février 2006 à 10:14:54

      Ton code n'est pas plus portable que system("PAUSE");
      getch () n'existe que sous windows, je crois, et n'est pas standard(ca j'en suis sur :P).
      Pour faire standard il faut utiliser getchar (), et il y a eu deja pas mal de post la dessus :)
      • Partager sur Facebook
      • Partager sur Twitter
        18 février 2006 à 10:15:52

        merci je vais essayer
        getchar();


        edit : getchar marche pas
        • Partager sur Facebook
        • Partager sur Twitter
          18 février 2006 à 10:18:45

          En même temps c'est pas une découverte et c'est marqué dans la FAQ :p
          • Partager sur Facebook
          • Partager sur Twitter
            18 février 2006 à 10:24:40

            Ouais lol, on le sait depuis longtemps quand même...
            • Partager sur Facebook
            • Partager sur Twitter
              18 février 2006 à 11:29:08

              #include <stdio.h>

              int main(void)
              {
                      int n;
                      printf("Entrez un nombre.\n");
                      scanf("%d", &n);
                      printf("Appuyez sur une touche pour continuer.\n");
                      getchar();
              }


              Oh bah merde, ca marche pas !

              C'est très bien de vouloir donner des conseils, mais si on explique pas ce qu'il y a derrière ça ne peut rien donner de bon.

              Attendez le cours de m@teo sur les fgetc/fgets sur l'entrée standard pour utiliser ce genre de trucs, sinon on court au massacre, fflush(stdin) à gogo et compagnie.
              • Partager sur Facebook
              • Partager sur Twitter
                18 février 2006 à 11:51:22

                Tu peux corriger le problème avec :
                #include <stdio.h>

                int main(void)
                {
                        int n;
                        printf("Entrez un nombre.\n");
                        scanf("%d", &n);
                        while(getchar() != EOF);
                        printf("Appuyez sur espace pour continuer.\n");
                        getchar();
                }


                Si tu veux entrée, il te faudra 2 getchar car le scanf laisse le \n dans le buffer donc il te faut un premier getchar pour vider le buffer et un autre pour tester l'appuie sur une touche.
                • Partager sur Facebook
                • Partager sur Twitter
                  18 février 2006 à 12:46:55

                  Bref, c'est vachement simple, et c'est une super bonne idée de proposer ça aux zéros en remplacement du system("pause"); !

                  Citation

                  Au lieu de system("pause");, il suffit de copier/coller sans comprendre trois lignes de codes étranges. Bien sur, c'est beaucoup mieux.

                  Croyez moi sur parole, et si jamais vous avez un problème, venez vous plaindre sur le forum, oncle Natim vous aidera.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    18 février 2006 à 16:29:43

                    • vous pouvez personnalisez le message de pause



                    tu peux personaliser avec system("pause");
                    • Partager sur Facebook
                    • Partager sur Twitter
                      18 février 2006 à 20:06:16

                      Citation : bluestorm

                      Au lieu de system("pause");, il suffit de copier/coller sans comprendre trois lignes de codes étranges. Bien sur, c'est beaucoup mieux.

                      Croyez moi sur parole, et si jamais vous avez un problème, venez vous plaindre sur le forum, oncle Natim vous aidera.



                      Pourquoi sans comprendre ? o_O
                      De toute manière, je ne vois pas l'interet du system("PAUSE");
                      • Partager sur Facebook
                      • Partager sur Twitter
                        18 février 2006 à 20:15:47

                        Je vous conseille de créer une fonction
                        comme ca vous mettez

                        pause();
                        dans votre code et op votre message apparait
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Engineer in Training please wait fr social life ---- Vist www.charybde.be
                          18 février 2006 à 21:00:27

                          D'un autre côté, on peut aussi générer une boucle infinie qui va attendre que l'on clique sur une touche pour sortir de la boucle !
                          Le problème c'est que ça occupe tous les CPU !
                          • Partager sur Facebook
                          • Partager sur Twitter
                            18 février 2006 à 21:52:59

                            Top moumoutte, ca, de poller avec tout le CPU disponible pour voir si l'utilisateur a appuyé sur une touche :o !
                            • Partager sur Facebook
                            • Partager sur Twitter
                              19 février 2006 à 0:21:15

                              On peut surement faire mieu, mais comment ?
                              • Partager sur Facebook
                              • Partager sur Twitter
                                19 février 2006 à 0:42:07

                                getchar() est très bien, y'a pas à chercher plus loin.
                                L'exemple de bluestorm ne marche pas parce que scanf est moisi, rien de plus.
                                Le mieux est de ne pas utiliser scanf, après sinon vous pouvez mettre deux getchar().. mais bon, ça commence à faire beaucoup de bricolage.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  19 février 2006 à 2:48:17

                                  fgets() peut contenir des nombres pas vrai?
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    19 février 2006 à 7:44:40

                                    Je suis d'accord avec Elentar. Sauf que le cours de m@teo explique avec des scanf, et je pense que ca sers à rien de faire chier des gens qui n'ont lu que ça pour l'instant avec des choses qui ne marchent pas.

                                    Attendons le cours sur le fgets en stdin (il a dit qu'il ferait un bout sur ça) et vous pourrez vous éclater.

                                    Gambit > non, il faut faire un atoi derrière si tu veux récupérer un int.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Anonyme
                                      19 février 2006 à 10:05:22

                                      Sinon on peut toujours utiliser la fonction cleanScan de la FAQ (http://www.siteduzero.com/forum-84-9294-76478.html)
                                      comme ça:
                                      long test = 0;
                                      scanf("%ld", &test);
                                      cleanScan(test);
                                      printf("Ca marche!");
                                      getchar();
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        19 février 2006 à 10:17:23

                                        Hum en fait, la faq a sérieusement besoin de mise à jour ; actuellement, je propose notamment scanf("%ld%*[^\n]%*c", &test) à la place d'appeler cleanscan après.
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Anonyme
                                          19 février 2006 à 10:19:15

                                          Moi je veux bien mais je comprends pas bien ce code (qui a des allures de Regex en PHP)
                                          Est-ce que vous voulez bien me l'expliquer?
                                          Edit: De plus ça marche pas quand je teste ce code:
                                          #include <stdio.h>

                                          int main(void)
                                          {
                                              long test = 0;
                                              scanf("%ld%*[^\n]%*c", &test);
                                              printf("%ld", test);
                                              getchar();
                                          }
                                          Ben le programme ferme dès que j'appuie sur entrée
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            19 février 2006 à 10:29:39

                                            Hum en effet, ya un effet que je n'avais pas vu ce devrait être :
                                            #include <stdio.h>

                                            int main(void)
                                            {
                                            long test = 0;
                                            scanf("%ld%*[^\n]", &test); getchar();
                                            printf("%ld", test);
                                            getchar();
                                            }

                                            Le getchar va de paire avec le scanf.
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            Anonyme
                                              19 février 2006 à 10:35:22

                                              En effet ça marche là. Merci! Donc à chaque fois que je veux récupérer un nombre entré par l'utilisateur, je dois rajouter après le format "%*[^\n]" + un getchar après le scanf? (pour les chaines je garde toujours fgets)
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                19 février 2006 à 10:37:22

                                                Pour getch(), il ne faut pas inclure conio.h ?
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  19 février 2006 à 10:43:14

                                                  Citation : Ze moi

                                                  En effet ça marche là. Merci! Donc à chaque fois que je veux récupérer un nombre entré par l'utilisateur, je dois rajouter après le format "%*[^\n]" + un getchar après le scanf? (pour les chaines je garde toujours fgets)


                                                  Ouep
                                                  En fait ce que ça fait c'est que : le %*[^\n] élimine tous les caractères jusqu'à la fin de la ligne et le getchar sert à virer le \n lui même. Du coup tu lis une ligne entière tout en profitant des formats.
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                  Anonyme
                                                    19 février 2006 à 10:44:16

                                                    Ok merci pour la précision, parce que j'aime pas beaucoup utiliser quelque chose que je ne comprends pas
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter

                                                    dite adieu a" system("PAUSE");"

                                                    × 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