Partage
  • Partager sur Facebook
  • Partager sur Twitter

Programme fermé instantanément à la fin

    4 janvier 2020 à 22:31:35

    Bonjour ! Je suis actuellement le cours d'apprentissage sur le C. Je suis en train de travailler sur l'amélioration du jeu du plus ou moins. J'ai remarqué que quand on avait compilé le programme, un fichier .exe apparaissait dans le dossier du projet (jusque là normal :lol:). Cependant, quand j'exécute mon programme avec ce fichier .exe, le programme se fermait instantanément à la fin, sans laisser le temps de lire la phrase finale, alors que quand je l'exécute avec le fichier de mon projet (un fichier CodeBlocks), il ne se fermait pas comme ça instantanément à la fin... 

    Quelqu'un saurait pourquoi ça fait ça et comment résoudre ce problème ? Merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
      4 janvier 2020 à 23:31:21

      Le programme se ferme parce qu'il a terminé. Si tu ne veux pas qu'il se ferme, il faut lui faire faire quelque chose. Par exemple tu pourrais finir par quelque chose comme :

      int truc ;
      printf("Appuyez sur [Entrée] pour continuer : ") ;
      scanf("%d", &truc) ;
      

      Je viens d'essayer : même en tapant n'importe quoi, du moment que ça finisse par [Entrée] ça s'arrête (mais il y a d'autres façon de procéder).

      -
      Edité par robun 4 janvier 2020 à 23:33:11

      • Partager sur Facebook
      • Partager sur Twitter
        5 janvier 2020 à 2:28:27

        Salut,
        Sur quel système travailles-tu. Avec CodeBlocks, j'aurais tendance à croire que c'est Windows. À moins qu'il fonctionne ailleurs.
        Si tu ne l'exécutes pas sur CodeBlocks, où l'exécutes-tu? Je travaille sur Windows 10 avec cmd et rien ne s'efface.
        Tu pourrais utiliser la fonction system() avec l'entête stdlib.h comme suit:
        system("pause");
        Tu tapes n'importe quoi et ça marche, pas besoin de Entrer.
        Je ne connais pas de fonction pause() en C.
        Il y a la fonction sleep(), mais c'est embêtant de choisir le bon nombre de secondes.
        La suggestion de robun est très bien, je l'ai déjà utilisé.
        C'est vrai qu'on peut taper n'importe quoi suivi de la touche Entrer, et ça marche.
        Ça ne marche pas si on tape Entrer en début de ligne. Ça marche si on utilise getchar() à la place de scanf().
        • Partager sur Facebook
        • Partager sur Twitter

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

          5 janvier 2020 à 7:53:26

          Mettre un system("pause") ou autre scanf à la fin est une mauvaise idée.

          Le rôle du programme est de dérouler le jeu, point. Pas de faire une pause à la fin.

          Pour cela il faut configurer l'IDE pour qu'il fasse l'exécution en

          • Ouvrant une fenêtre
          • Y faire tourner le programme
          • Faire une pause avant de fermer la fenêtre.

          Lisez la doc, et configurez correctement vos outils, merdekoi.

          -
          Edité par michelbillaud 5 janvier 2020 à 7:53:52

          • Partager sur Facebook
          • Partager sur Twitter
            5 janvier 2020 à 19:21:41

            Je ne savais pas comment configurer un IDE puisque je n'en utilise pas.
            Comme je l'ai dit, je n'ai pas ce genre de problème avec cmd sur Windows.
            Je ne met jamais ce genre de trucs dans mes programmes. J'en ai fait ici pour tester ce que ça donnait.
            Une fois de plus, cela me réconcilie avec l'idée de ne pas avoir d'IDE.
            • Partager sur Facebook
            • Partager sur Twitter

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

              5 janvier 2020 à 19:46:41

              PierrotLeFou a écrit:

              Je ne savais pas comment configurer un IDE puisque je n'en utilise pas.
              Comme je l'ai dit, je n'ai pas ce genre de problème avec cmd sur Windows.
              Je ne met jamais ce genre de trucs dans mes programmes. J'en ai fait ici pour tester ce que ça donnait.
              Une fois de plus, cela me réconcilie avec l'idée de ne pas avoir d'IDE.


              Ah je ne suis pas d'accord avec toi.

              Pour faire une analogie, je te vois bricoler avec un couteau suisse, alors que nous, avec notre IDE, on a une super trousse a outil, des tournevis électriques, une scie circulaire, une ponceuse, bref tout le matos qu'on peut trouver.... Et comme il n'est pas trivial de calibrer sa scie sauteuse, tu nous dis "je suis bien content d'utiliser ma petite scie que je déplie de mon couteau suisse...."

              Oui c'est chiant de configurer un IDE, mais une fois que c'est fait, tu as plein d'outils (dont un debuggueur embarqué et de multiples aides à la compilation) intégrés qui te facilitent la vie.

              • Partager sur Facebook
              • Partager sur Twitter

              Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

                5 janvier 2020 à 22:16:38

                Salut,

                pour Code::Blocks :

                Clic droit sur le projet (à gauche) / propriétés / onglet "build targets" puis cocher "pause when execution ends" en ayant fait attention de sélectionner "debug" à gauche.

                Bonne continuation.

                • Partager sur Facebook
                • Partager sur Twitter

                Bonhomme !! | Jeu de plateforme : Prototype.

                  5 janvier 2020 à 22:19:53

                  Faut juste lire la doc, en fait

                  http://www.codeblocks.org/docs/main_codeblocks_fr.html

                  (à la fin)

                  D'où il ressort que le comportement de CB (à partir de quelle version ?), quand on fait tourner un programme est bien d'insérer une pause à la fin.

                  Leur idée d'ajouter une lecture à la fin quand on le lance dans un terminal est pourrie. Faut pas faire ça.  Faites un script qui lance le programme, puis fait une pause.

                  Ceci dit, y a un moment que CB est arrivé dans ma poubelle.


                  -
                  Edité par michelbillaud 5 janvier 2020 à 22:26:32

                  • Partager sur Facebook
                  • Partager sur Twitter
                    5 janvier 2020 à 23:45:58

                    Bonjour,

                    En fait j’ai l’impression qu’il veut lancer son programme en dehors de l’IDE, donc régler son IDE ne va pas changer grand-chose, d’autant plus qu’il dit bien que quand il lance son programme depuis Code::Block c’est OK.

                    Au PO : le truc c’est qu’un programme console n’est pas trop fait pour être lancé comme ça en cliquant dessus, mais plutôt pour être lancé depuis un terminal ouvert préalablement. Après, tu peux bien sûr rajouter une saisie de l’utilisateur à la fin de ton programme, mais je ne suis pas convaincu par cette solution.

                    -
                    Edité par yo@n97one 5 janvier 2020 à 23:47:08

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                      6 janvier 2020 à 1:31:30

                      @Fvirtman:
                      Ce n'est un secret pour personne que je suis aveugle. Or, les IDE ont une utilisation très visuelle.
                      Pour reprendre ton analogie, je ne veux pas me prendre les doigts dans la scie circulaire.
                      Je peux utiliser le mode "debug" du compilateur et utiliser "gdb" si je veux.
                      La coloration syntaxique ne me serait d'aucune utilité.
                      Si on me confirme que Notepad++ peut faire de l'indentation automatique avec jumelage automatique des 'parenthèses' (telles que {} [] () "" et '') je veux bien faire l'effort de l'aprofondir.
                      Je pense être assez organisé, et pour faire plaisir à michelbillaud, j'utilise les fonctions à souhait.
                      Même si je n'ai pas beaucoup programmé durant les dernières années, j'ai tout de même 30 ans d'expérience sur les ordinateurs, dont 10 ans sur Unix avec C (et bien d'autres choses).
                      • Partager sur Facebook
                      • Partager sur Twitter

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

                        6 janvier 2020 à 6:30:51

                        Salut,

                        oui Notepad++ peut faire ça. C'est ce que j'utilise quand un bout de code me passe par la tête pour le noter vite fait ou pour des langages qui ne nécessite pas de support (type javascript / html).

                        C'est un peu le Bronxe au niveau des plugins et pour certains réglages, mais une fois bien installé et configuré, c'est assez agréable d'utilisation.

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Bonhomme !! | Jeu de plateforme : Prototype.

                          6 janvier 2020 à 8:15:16

                          @drx:
                          Je te remercie de confirmer. J'utilise surtout Bloc-Notes qui est rudimentaire. Il est parfait pour les petites pages html/css,
                          J'avais entendu parler des Plugins de Notepad++ mais je ne sais pas où les trouver et comment les installer.
                          Dans le dossier d'installation de Notepad++, il y a un sous-dossier 'Plugins'. Je suppose que c'est là que je les mettrais.
                          As-tu l'adresse d'un tuto où je pourrais trouver l'information nécessaire?
                          • Partager sur Facebook
                          • Partager sur Twitter

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

                            6 janvier 2020 à 9:13:37

                            Re,

                            Il y a une option "plugins" avec un plugin manager qui liste à peut près tout ce qui est disponible.

                            • Partager sur Facebook
                            • Partager sur Twitter

                            Bonhomme !! | Jeu de plateforme : Prototype.

                              7 janvier 2020 à 1:34:39

                              Salut,
                              Étant donné que Notepad++ n'est pas le sujet de ce topic, je renvoie les intéressés au sujet suivant:
                              https://openclassrooms.com/forum/sujet/w10-notepad-ligne-de-commande#message-93618667
                              • Partager sur Facebook
                              • Partager sur Twitter

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

                                7 janvier 2020 à 12:54:26

                                PierrotLeFou a écrit:

                                @Fvirtman:
                                Ce n'est un secret pour personne que je suis aveugle. Or, les IDE ont une utilisation très visuelle.
                                Pour reprendre ton analogie, je ne veux pas me prendre les doigts dans la scie circulaire.
                                Je peux utiliser le mode "debug" du compilateur et utiliser "gdb" si je veux.
                                La coloration syntaxique ne me serait d'aucune utilité.
                                Si on me confirme que Notepad++ peut faire de l'indentation automatique avec jumelage automatique des 'parenthèses' (telles que {} [] () "" et '') je veux bien faire l'effort de l'aprofondir.
                                Je pense être assez organisé, et pour faire plaisir à michelbillaud, j'utilise les fonctions à souhait.
                                Même si je n'ai pas beaucoup programmé durant les dernières années, j'ai tout de même 30 ans d'expérience sur les ordinateurs, dont 10 ans sur Unix avec C (et bien d'autres choses).


                                Je ne remets pas du tout en doute tes compétences et ton expérience. Je dis juste que c'est dommage de se priver de trucs modernes et puissants.

                                Mais je raisonne comme toi dans d'autres domaines : pour le web par exemple. Je n'aime pas le web, et quand je veux faire une page rapide, j'ouvre un bloc note, et je tape du HTML vite fait comme je le faisais il y a 20 ans. Et je sais qu'il existe des logiciels puissants pour faire des sites, mais j'ai mes habitudes, et j'ai juste pas envie de m'y intéresser à ces logiciels. Et c'est pas facile de changer des habitudes. 

                                • Partager sur Facebook
                                • Partager sur Twitter

                                Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

                                  7 janvier 2020 à 13:03:05

                                  svp comment faire pour donner un type (int* , double*...par exemple) a un pointeur qui a été déclarer avec le type void?
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    7 janvier 2020 à 13:34:48

                                    Si tu parles d'une variable de type void*,  elle a un type, elle n'en n'a pas deux.

                                    Peut être faut il poser la question autrement, avec un exemple précis par exemple ? Et en faire un autre sujet, parce que ça n'a absolument aucun rapport avec celui-ci.

                                    -
                                    Edité par michelbillaud 7 janvier 2020 à 13:35:34

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      7 janvier 2020 à 15:54:37

                                      Peut-être que ValdesVoufo1 veut faire du casting?
                                      faire (int *) devant la variable serait la solution?
                                      • Partager sur Facebook
                                      • Partager sur Twitter

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

                                        7 janvier 2020 à 16:41:14

                                        Si c'est pour convertir un pointeur, ce n'est pas utile. 

                                        Faire exprimer le besoin réel, en premier, avant de  tenter de proposer une solution à ce qui n'est peut être pas un problème 

                                        -
                                        Edité par michelbillaud 7 janvier 2020 à 16:42:06

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          7 janvier 2020 à 18:44:46

                                          michelbillaud a écrit:

                                          Si c'est pour convertir un pointeur, ce n'est pas utile. 

                                          Faire exprimer le besoin réel, en premier, avant de  tenter de proposer une solution à ce qui n'est peut être pas un problème 

                                          -
                                          Edité par michelbillaud il y a environ 1 heure

                                          Peut-être que ValdesVoufo1 veut faire du casting?
                                          faire (int *) devant la variable serait la solution?
                                          La plupart des gens ne savent pas comment exprimer leur problèmes (pas seulement en informatique).
                                          On est parfois amené à le deviner pour eux, et c'est vrai qu'on se trompe parfois.
                                          • Partager sur Facebook
                                          • Partager sur Twitter

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

                                            7 janvier 2020 à 23:10:52

                                            Comme ils ne comprennent pas non plus la réponse parce qu'elle ne correspond pas à leur contexte, c'est mal barré.
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              16 janvier 2020 à 19:12:54

                                              drx a écrit:

                                              Salut,

                                              pour Code::Blocks :

                                              Clic droit sur le projet (à gauche) / propriétés / onglet "build targets" puis cocher "pause when execution ends" en ayant fait attention de sélectionner "debug" à gauche.

                                              Bonne continuation.

                                              Pourtant ça ne marche toujours pas

                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              Programme fermé instantanément à la fin

                                              × 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