526 votes

Empêcher la fermeture de la fenêtre de la console dans une application Visual Studio C/C++ Console

C'est une question probablement embarrassante car la réponse est sans doute d'une évidence aveuglante.

J'utilise Visual Studio depuis des années, mais c'est la première fois que je développe une "application console".

Lorsque j'exécute mon application, la fenêtre de la console s'ouvre, la sortie du programme apparaît, puis la fenêtre se ferme lorsque l'application se termine.

Existe-t-il un moyen de garder la fenêtre ouverte jusqu'à ce que j'aie vérifié les résultats, ou d'afficher les résultats après la fermeture de la fenêtre ?

0 votes

Monodevelop fait ce que vous attendez.

0 votes

Je suis d'accord. Je pense que la meilleure réponse pour VS 2017 et plus récent est celle de chronoxor.

490voto

Tom Points 12285

Si vous exécutez le programme sans déboguer (Ctrl+F5), il vous invite par défaut à appuyer sur la touche Retour pour fermer la fenêtre. Si vous voulez utiliser le débogueur, vous devez placer un point d'arrêt sur la dernière ligne.

282 votes

Si vous avez une application C++ et que vous l'exécutez sans débogage et que la fenêtre de la console se ferme toujours, vous devez vous rappeler de définir explicitement le sous-système sur Console sous Propriétés de configuration / Linker / Système. Cela peut se produire si vous commencez avec un projet vide, ce qui laisse le sous-système non défini.

2 votes

Vous pouvez également ajouter le bouton "Démarrer sans déboguer" à toutes les barres d'outils/menus que vous voulez, si vous fouillez dans le menu de l'interface utilisateur. Tools->Customize... dialogue.

4 votes

Cela n'a pas fonctionné pour moi :( La fenêtre de la console s'ouvre et se ferme immédiatement, mais le journal se met en pause et attend une nouvelle pression sur F5.

256voto

Viraj Points 161

Cliquez avec le bouton droit de la souris sur votre projet

Propriétés > Configuration Propriétés > Linker > Système

Sélectionnez Console (/SUBSYSTEM:CONSOLE) sur SubSystem ou vous pouvez simplement taper Console dans le champ de texte !

Maintenant, essayez-le... ça devrait marcher

1 votes

Cela a fonctionné pour mon VS2013 Express, mais pas pour la réponse acceptée. Très étrange, car la réponse acceptée a fonctionné pour toutes les versions de Visual Studio que j'ai utilisées dans le passé.

9 votes

@MichaelCalvin Vous devez utiliser Ctrl + F5 après avoir défini cette option, c'est là le problème.

0 votes

Comme @JonathanMee l'a dit, vous devez toujours exécuter Ctrl + F5. Ceci était déjà configuré dans mon visual studio 2015, donc la première réponse était celle qui m'a le plus aidé.

44voto

Shaun Points 67

Voici une méthode pour C/C++ :

#include <stdlib.h>

#ifdef _WIN32
    #define WINPAUSE system("pause")
#endif

Placez ceci en haut de votre programme, et SI celui-ci est sur un système Windows ( #ifdef _WIN32 ), alors il créera une macro appelée WINPAUSE . Chaque fois que vous voulez que votre programme fasse une pause, appelez WINPAUSE; et il mettra le programme en pause, en utilisant la commande DOS. Pour d'autres systèmes comme Unix/Linux, la console ne devrait pas quitter à la sortie du programme de toute façon.

0 votes

Cette méthode ne fonctionne pas dans Visual C++ (à moins que vous n'incluiez des en-têtes ?).

2 votes

@wmac Vous devez inclure l'en-tête Windows.h.

1 votes

Je n'ai pas inclus de bibliothèque ou d'espace de noms, mais le système fonctionne correctement, merci beaucoup.

35voto

pashaplus Points 379

Goto Debug Menu-> Appuyez sur StartWithoutDebugging

1 votes

Ce n'est même pas une option dans VS 2008, sauf si l'environnement de développement C# a été choisi. CTRL + F5 fonctionne cependant. Vous pouvez également l'ajouter comme bouton à la barre d'outils via Outils > Personnaliser.

0 votes

Si vous avez plusieurs projets, définissez celui qui vous intéresse comme projet de démarrage.

33voto

Cheeso Points 87022

Si vous utilisez .NET, mettez Console.ReadLine() avant la fin du programme.

Il attendra <ENTER> .

12 votes

+1 - Soit cela, soit Console.ReadKey() pour attendre n'importe quelle clé.

0 votes

Bizarre, cela n'a aucun effet dans mon application. Elle se ferme toujours sans attendre l'entrée de l'utilisateur.

4 votes

Dans ce cas, il est fort probable que votre code se termine avant d'atteindre ce point.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X