C окно консоли закрывается

Обновлено: 09.05.2024

Предотвращение закрытия окна консоли в приложении консоли Visual Studio C / C ++

Это, вероятно, неудобный вопрос, поскольку, без сомнения, ответ ослепляюще очевиден.

Я использовал Visual Studio в течение многих лет, но это первый раз, когда я занимаюсь разработкой «консольного приложения».

Когда я запускаю свое приложение, появляется окно консоли, появляется вывод программы, а затем окно закрывается при выходе из приложения.

Есть ли способ оставить его открытым до тех пор, пока я не проверю вывод, или просмотреть результаты после закрытия окна?

Martin 21 Ноя 2009 в 18:58

22 ответа

Лучший ответ

Начиная с Visual Studio 2017 (15.9.4) есть возможность:

Автоматически закрывать консоль при остановке отладки:

Сообщает Visual Studio закрыть консоль в конце сеанса отладки.

Community 20 Июн 2020 в 09:12

Если вы запускаете без отладки (Ctrl + F5), то по умолчанию вам будет предложено нажать клавишу возврата, чтобы закрыть окно. Если вы хотите использовать отладчик, вы должны поставить точку останова на последней строке.

Tom 21 Ноя 2009 в 16:00

Щелкните правой кнопкой мыши свой проект

Свойства> Свойства конфигурации> Компоновщик> Система

Выберите Консоль (/ SUBSYSTEM: CONSOLE) в параметре SubSystem или просто введите Консоль в текстовое поле!

Теперь попробуйте . он должен работать

Bhargav Rao 31 Янв 2020 в 00:17

Вот способ для C / C ++:

carefulnow1 22 Окт 2016 в 15:05

Он будет ждать <ENTER> .

Cheeso 21 Ноя 2009 в 16:11

Перейти к меню отладки-> Нажмите StartWithoutDebugging

pashaplus 28 Сен 2012 в 09:24

Попробуйте позвонить getchar() прямо перед возвращением main() .

Alex Shesterov 4 Апр 2013 в 17:54

(/ SUBSYSTEM: CONSOLE) не работал на моем vs2013 (он у меня уже был).

"запускать без отладки" не вариант, так как я не хочу переключаться между отладкой и просмотром вывода.

Решение, используемое в qtcreator до 2.6. Теперь, когда qt растет, vs идет другим путем. Насколько я помню, в vs2008 нам такие ухищрения не понадобились.

fantastory 13 Окт 2015 в 14:50

Вот решение, которое (1) не требует каких-либо изменений кода или точек останова и (2) приостанавливает работу после завершения программы , чтобы вы могли видеть все , что было напечатано. Он будет приостановлен после F5 или Ctrl + F5. Основным недостатком является то, что в VS2013 Express (как проверено) он не загружает символы, поэтому отладка очень ограничена.

Создайте командный файл. Я назвал свой runthenpause.bat со следующим содержанием:

Первая строка будет запускать любую предоставленную вами команду и до восьми аргументов. Вторая строка . пауза.

Откройте свойства проекта | Свойства конфигурации | Отладка.

Теперь, когда вы запустите, runthenpause.bat запустит ваше приложение и после завершения вашего приложения остановится, чтобы вы могли увидеть вывод консоли.

Я опубликую обновление, если выясню, как загрузить символы. Я пробовал /Z7 на это, но безуспешно.

Закрывается консоль

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы ( 1 ) 94731 / 64177 / 26122 Ответы с готовыми решениями:

Закрывается консоль
Здравствуйте! У меня такая проблема: делал программу по переводу галлонов в литры, но после.

Зависает и закрывается консоль
Добрый день! Делаю лабораторную по ООП. Задание - разряженный полином, с динамической структурой.

Консоль закрывается, не выдав результата
У меня есть 2 кода, нужно сделать третий, из которого можно было бы открывать первые два. Что-то.

10848 / 8973 / 5402 180 / 46 / 33

Решение

После 11-ой строки попробуй добавить:
Хитрая блондиночка $) 1463 / 978 / 399 Перед return напиши если виндовс. спасибо, помогло С чаем беда. 9066 / 4599 / 1249 В чём проблема ребят, почему программа открывается просит ввести значение и после ввода и нажатия ентер выключается

Программа "выключается" потому, что вы ее так и написали - выполняющейся без остановки и сразу завершающейся - и выполняете ее не из консоли.

Вставлять в консольное придложение всякие 'cin.get()' или 'system("pause")' - это грязное программироване и дискредитация идеи консольного приложения. Если вы пользуетесь Microsoft Visual Studio, то поставьте в установках проекта SUBSYSTEM=CONSOLE и запускайте свою программу без дебаггера (Ctrl+F5). Окно консоли не будет закрываться по завершению программы. Если же вы ползуетесь другой средой - смотрите документацию на тему того, как это делается там.

87844 / 49110 / 22898

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Консоль закрывается после выполнения программы
Всем привет, такая проблема, после выполнения программы окно консоли закрывается. Как можно.

Консоль закрывается после перехода в функцию
После выполнения функции main консоль закрывается, в чем ошибка? int _tmain(int argc, _TCHAR*.


Консоль закрывается в процессе выполнения программы - С++
В Visual Studio в процессе выполнения программы и в процессе работы закрывается через какое- то.

Закрывается окно консоли

Помощь в написании контрольных, курсовых и дипломных работ здесь.

94731 / 64177 / 26122 Ответы с готовыми решениями:

Закрывается окно программы
Ниже записан алгоритм. Получив на вход число x этот алгоритм печатает два числа a и b. Укажите.

Закрывается OpenGL окно
Пишу программу, которая работает с векторами, мне надо чтобы пользователь взаимодействовал с.

Закрывается консольное окно
Всем привет. Не пойму что мне делать,при компиляции появляется консольное окно и сразу.

192 / 190 / 15 Это как из командной строки ? Нажимаешь пуск-выполнить "cmd", потом вводишь полный путь программы и нажимаешь Enter Light Knight 106 / 29 / 5 пропиши в конце кода
2336 / 1709 / 148 87844 / 49110 / 22898

Помощь в написании контрольных, курсовых и дипломных работ здесь.

окно всё равно закрывается.
Всем доброго времени суток! прочитал тему тут понял что в конце программы необходимо добавить.

Окно выполнения сразу же закрывается
Доброго времени суток. После нажатия f9 в c++ builder 6 появляется окно выполнения и тут же.


Произвольно закрывается окно с программы
Добрый день! Учу С++ в Visual Studio 2013. Часто во время работы кода , после введения строки и.

Задержка экрана консоли на C++

Итак, вы написали консольное приложение, компилятор построил его без ошибок, но после запуска программы окно приложения сразу закрывается, сейчас я расскажу как этого избежать.

Если вы пользуетесь Visual Studio 2008 или более ранней версией, Вам достаточно запускать программу из интерфейса компилятора с помощью нажатия клавиш Ctrl + F5.

Если Вы пользуетесь другим компилятором или хотите использовать Вашу программу вне компилятора, то возможны два способа создание задержки экрана. Первый — Прописать команду system("pause"); в конце главной функции main, но перед оператором return, например:

Эта системный оператор командной строки Windows, также можно реализовать задержку экрана с помощью оператора getch();, но для этого необходимо подключить библиотеку conio.h, пример ниже:

Вы можете применять любой из вышеприведенных способов, принципиальных отличий у них не наблюдается, все исходники в разделе C/C++ приведены без команды задержки экрана, так как были откомпилированы в среде Visual Studio 2008 и запускались из под ее интерфейса.

Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы

Если консоль закрывается после выполнения программы

Очень часто новички сталкиваются с такой проблемой: запускают программу, а консоль закрывается после выполнения программы и не дает просмотреть результат ее работы. В этот статье мы поговорим о том, что нужно сделать, чтобы этого избежать.

printf ( "Hello world!\n" ) ;

Запустим программу, для этого нажмем в Visual Studio клавишу F5. Консоль появляется и мгновенно исчезает. Существуют два пути решения этой проблемы.

Первый. Самый простой. Нажать одновременно клавиши Ctrl и F5. Смотрим результат:

мои консольные приложения в Visual Studio закрываются автоматически, поэтому я хотел бы использовать что-то вроде C system("PAUSE") чтобы "приостановить" приложения в конце его выполнения, как можно Я достигну этого?

автор: Zignd

ReadLine() ждет ↩ , ReadKey() ожидает любой клавиши (кроме клавиш-модификаторов).

Edit: украл ключевой символ у Дарина.

автор: Adam

вы можете просто скомпилировать (начать отладку) свою работу с Ctrl + Ф5 .

попробовать его. Я всегда это делаю, и консоль показывает мне мои результаты, открытые на нем. Дополнительный код не требуется.

автор: Silvia Z

попробовать Сочетание Клавиш Ctrl + Клавишу F5 в Visual Studio для запуска программы это добавит паузу с "нажмите любую клавишу, чтобы продолжить. - автоматически, без всякой консоли.Функции Readline() или ReadKey ().

автор: Sohail xIN3N

Console.ReadLine() ждать, пока пользователь Enter или Console.ReadKey ждать любой ключ.

автор: Darin Dimitrov

для его закрытия, когда кто-то нажимает любую клавишу, или:

Для когда пользователь вводит что-то и нажимает enter.

автор: 3aw5TZetdf

Ctrl + F5 лучше, потому что вам не нужны дополнительные строки. И вы можете, в конце концов, нажать enter и выйти из режима работы.

но, когда вы запускаете программу с F5 и ставите точку останова, вы можете отлаживать свое приложение, и это дает вам другие преимущества.

автор: Slobodan Stanković

кроме того, вы можете отложить закрытие, используя следующий код:

Примечание Sleep использует миллисекунд.

автор: gotqn

эти решения, упомянутые изменить, как работает ваша программа.

если вы только хотите, чтобы это работало в DEBUG , просто оберните этот код в [Conditional("DEBUG")] void BreakConditional() метод.

это также работает для отладки программ, которые нуждаются в повышенных привилегиях или которые должны быть в состоянии поднять себя.

автор: Eric

Если вы не хотите, чтобы программа закрывалась, даже если пользователь нажимает anykey;

Предотвращение закрытия окна консоли в консольном приложении Visual Studio C / C++

Это наверное embarasing вопрос, без сомнения, ответ будет совершенно очевидной.

Я использовал Visual Studio в течение многих лет, но это первый раз, когда я сделал какую-либо разработку консольного приложения.

когда я запускаю приложение, появляется окно консоли, вывод программы, а затем окно закрывается по мере выхода приложения.

есть ли способ либо сохранить его открытым, пока я не проверил вывод, либо просмотреть результаты после окно закрыто?

автор: sorin

Если вы работаете без отладки (Ctrl+F5), то по умолчанию он предлагает вам нажать return, чтобы закрыть окно. Если вы хотите использовать отладчик, вы должны поставить точку останова на последней строке.

Правой Кнопкой Мыши на вашем проекте

Свойства>Свойства Конфигурации> Компоновщик - > Система

выберите консоль (/SUBSYSTEM:CONSOLE) в .

теперь попробуйте. он должен работать

автор: Viraj

вот способ для C / C++:

автор: Shaun

Меню Отладки Goto ->пресс StartWithoutDebugging

автор: pashaplus

Он будет ждать <ENTER> .

автор: Cheeso

попробуйте позвонить getchar() перед main() возвращает.

автор: Magarusu

(/SUBSYSTEM:CONSOLE) не работал для моего vs2013 (у меня уже был).

"запуск без отладки" не является опцией, так как я не хочу переключаться между отладкой и просмотром вывода.

решение используется в qtcreator до 2.6. Теперь, когда qt растет, vs идет другим путем. Как я помню, в vs2008 нам не нужны такие фокусы.

автор: fantastory

вот решение, которое (1) не требует никаких изменений кода или точек останова и (2) приостанавливает после завершения работы программы так что вы можете видеть все это было напечатано. Он будет приостановлен после F5 или Ctrl+F5. Основным недостатком является то, что на VS2013 Express (как проверено) он не загружает символы, поэтому отладка очень ограничена.

создать пакетный файл. Я назвал свое runthenpause.bat , со следующими содержание:

в первой строке будет выполняться любая команда, которую вы предоставляете, и до восьми аргументов. Вторая строка будет. пауза.

откройте свойства проекта | свойства конфигурации | отладка.

теперь, когда вы бежите, runthenpause.bat запустит ваше приложение, и после того, как ваше приложение завершится, сделает паузу для вас, чтобы увидеть вывод консоли.

я опубликую обновление, если выясню, как загрузить символы. Я пытался!--5--> per этой но без успеха.

вы можете запустить исполняемый файл из командной строки. Таким образом, вы могли видеть все выходные. Или вы можете сделать что-то вроде этого:

и таким образом окно не будет закрываться, пока вы не введете данные для a переменной.

добавить "/ pause " в поле аргументы команды в разделе отладки в свойствах проекта.

автор: theambient

просто нажмите CNTRL + F5, чтобы открыть его во внешнем окне командной строки (Visual Studio не имеет контроля над ним).

Если это не работает, добавьте следующее в конец вашего кода:

это ждать, пока вы нажмете клавишу, чтобы закрыть окно терминала, как только код достигнет конца.

Если вы хотите сделать это в нескольких местах, поставить выше код в метод (например, private void Pause() ) и вызов Pause() каждый раз, когда программа достигает возможного конец.

Почему окно консоли закрывается сразу после отображения моего вывода?

Теперь я просто попробовал Пример 1 (здесь - ссылка на MSDN ), и я столкнулся с проблемой: почему окно консоли сразу же закрывается после отображения моего вывода?

user962206 15 Янв 2012 в 12:06

22 ответа

Лучший ответ

проблема в том, что их программа Hello World отображается, а затем немедленно закрывается.
это почему?

Потому что это завершено. Когда консольные приложения завершили выполнение и вернулись из своего метода main , соответствующее окно консоли автоматически закрывается. Это ожидаемое поведение.

Если вы хотите оставить его открытым для целей отладки, вам нужно указать компьютеру дождаться нажатия клавиши перед завершением работы приложения и закрытием окна.

Метод Console.ReadLine - это один из способов делая это. Добавление этой строки в конец вашего кода (непосредственно перед оператором return ) заставит приложение ждать, пока вы нажмете клавишу, перед выходом.

В качестве альтернативы вы можете запустить приложение без подключенного отладчика, нажав Ctrl + F5 из среды Visual Studio, но это имеет очевидный недостаток, который не позволяет вам использовать отладку. функции, которые вы, вероятно, захотите использовать при написании приложения.

Лучшим компромиссом, вероятно, является вызов метода Console.ReadLine только при отладке приложения путем включения его в директиву препроцессора. Что-то типа:

Вы также можете захотеть, чтобы окно оставалось открытым в случае возникновения неперехваченного исключения. Для этого вы можете поместить Console.ReadLine(); в блок finally :

selalerer 9 Июл 2018 в 07:54

По моему мнению, если мы хотим стабилизировать ВЫВОД КОНСОЛЬНОГО ПРИЛОЖЕНИЯ до закрытия вывода, отобразите USE, метку: после MainMethod и метку goto; до окончания программы

Community 9 Дек 2018 в 02:21

Если ваша программа требует, чтобы вы нажали Enter, чтобы продолжить, как если бы вам нужно было ввести значение и продолжить, добавьте новый тип double или int и введите write перед retunr (0); scanf_s ("% lf", & переменная);

Watifido 26 Янв 2015 в 00:33

Добавьте следующее перед возвращением 0:

Это печатает строку для нажатия клавиши, чтобы закрыть окно. Окно будет отображаться до тех пор, пока вы не нажмете клавишу ввода. Я прошу своих студентов добавить его во все свои программы.

Theresa 23 Сен 2013 в 01:29

Вы можете решить это очень простым способом, просто вызвав ввод. Однако, если вы нажмете Enter , консоль снова отключится. Просто используйте это Console.ReadLine(); или Console.Read();

gdmanandamohon 24 Ноя 2017 в 07:25

Чтобы упростить то, что говорят другие: Используйте Console.ReadKey(); .

Это делает так, что программа ждет, когда пользователь нажмет обычную клавишу на клавиатуре.

Источник: использую в своих программах для консольных приложений.

Wai Ha Lee 27 Дек 2015 в 09:24

Я всегда добавляю следующий оператор в консольное приложение. (Создайте для этого фрагмент кода, если хотите)

Это помогает, когда вы хотите поэкспериментировать с разными концепциями через консольное приложение.

Ctrl + F5 заставит консоль остаться, но вы не сможете отлаживать! Все консольные приложения, которые я написал в реальном мире, всегда не интерактивны и запускаются планировщиком, таким как TWS или CA Workstation, и не требуют чего-то подобного.

Rashwan L 27 Дек 2015 в 09:08

Инструменты -> Параметры -> Отладка -> Общие -> Автоматически закрывать консоль (5-я последняя опция)

Установите флажок и закройте

Это относилось ко всем проектам.

Shakti Pravesh 9 Мар 2021 в 09:28

Что-либо, где бы то ни было в консольном приложении, никогда не используйте await , а вместо этого используйте theAsyncMethod().GetAwaiter().GetResult(); ,

bresleveloper 14 Дек 2018 в 09:20

Программа закрывается, как только завершится ее выполнение. В этом случае, когда вы return 0; . Это ожидаемая функциональность. Если вы хотите увидеть результат, либо запустите его в терминале вручную, либо установите ожидание в конце программы, чтобы оно оставалось открытым в течение нескольких секунд (с использованием библиотеки потоков).

zellio 15 Янв 2012 в 08:10

Вот способ сделать это без участия Console :

Andriy Kozachuk 5 Апр 2019 в 08:22

Добавьте метод Read для отображения вывода.

Rashwan L 27 Дек 2015 в 09:08

Используйте Console.Read (); чтобы предотвратить закрытие программы, но убедитесь, что вы добавили код Console.Read(); перед оператором return, иначе это будет недостижимый код.

Ravi Gadag 15 Янв 2012 в 08:14

Код готов, чтобы продолжить, вам нужно добавить это:

Ari 15 Янв 2012 в 08:13

Другой способ - использовать Debugger.Break() перед возвратом из метода Main

dimaaan 8 Сен 2015 в 07:39

В качестве альтернативы вы можете отложить закрытие, используя следующий код:

Обратите внимание, что Sleep использует миллисекунды.

gotqn 7 Дек 2014 в 12:40

Если вы хотите, чтобы ваше приложение оставалось открытым, вам нужно что-то сделать, чтобы поддерживать его процесс. Приведенный ниже пример - самый простой, который можно поместить в конец вашей программы:

Однако это вызовет перегрузку процессора, так как он вынужден бесконечно повторяться.

На этом этапе вы можете выбрать использование класса System.Windows.Forms.Application (но для этого потребуется добавить ссылку System.Windows.Forms ):

Это не приводит к утечке ЦП и успешно работает.

Чтобы избежать добавления ссылки System.Windows.Forms , вы можете использовать простой трюк, так называемое ожидание вращения , импортировав System.Threading :

Это также отлично работает и в основном состоит из цикла while с отрицательным условием, которое возвращается указанным выше лямбда-методом. Почему это не перегружает процессор? Вы можете посмотреть исходный код здесь; в любом случае, он в основном ожидает некоторого цикла ЦП перед повторением.

Затем вы можете безопасно выполнить цикл, выполнив что-то вроде этого:

Davide Cannizzo 13 Янв 2020 в 14:48 Vlad 11 Апр 2019 в 10:21

Программа немедленно закрывается, потому что ничто не мешает ей закрыться. Вставьте точку останова в return 0; или добавьте Console.Read(); перед return 0; , чтобы программа не закрывалась.

Robert Rouhani 15 Янв 2012 в 08:10

То же самое для Ctrl F5 или F5 . Поместите непосредственно перед концом метода Main .

Daniel 25 Ноя 2020 в 07:35

Я предполагаю, что причина, по которой вы не хотите, чтобы он закрывался в режиме отладки, заключается в том, что вы хотите посмотреть значения переменных и т. Д. Так что, вероятно, лучше просто вставить точку останова на закрытии ">" основной функции . Если вам не нужно отлаживать, тогда Ctrl-F5 - лучший вариант.

Rob L 17 Фев 2016 в 22:33

Вместо того, чтобы использовать

Вы можете запустить свою программу, используя Ctrl + F5 (если вы находитесь в Visual Studio). Тогда Visual Studio будет держать окно консоли открытым, пока вы не нажмете клавишу.

Почему окно консоли закрывается сразу же после отображения моего вывода?

теперь я просто попробовал Пример 1 (здесь это ссылка MSDN), и я столкнулся с проблемой: почему окно консоли закрывается сразу после отображения моего вывода?

автор: Davide Cannizzo

проблема здесь в том, что их программа Hello World появляется, тогда она сразу же закроется.
почему так?

потому что это закончилось. когда консольные приложения завершат выполнение и вернутся из своих main метод, связанное окно консоли автоматически закрывается. Это ожидаемое поведение.

если вы хотите сохранить его открытым для целей отладки, вам нужно будет проинструктировать компьютер ждать нажмите клавишу, прежде чем закончить приложение и закрыть окно.

на Console.ReadLine метод это один из способов сделать это. Добавление этой строки в конец кода (непосредственно перед return заявление) заставит приложение ждать, пока вы нажмете клавишу перед выходом.

кроме того, вы можете запустить приложение без прикрепленного отладчика, нажав Ctrl + Ф5 из среды Visual Studio, но это имеет очевидный недостаток предотвращения использования функций отладки, которые вы, вероятно, хотите иметь в своем распоряжении при написании приложения.

лучшим компромиссом, вероятно, является вызов Console.ReadLine метод только при отладке приложения путем его упаковки в директиву препроцессора. Что-то вроде:

вы также можете захотеть, чтобы окно оставалось открытым, если возникло необработанное исключение. Для этого вы можете поставить Console.ReadLine(); на finally блок:

автор: Cody Gray

вы можете запустить программу с помощью Ctrl + Ф5 (если вы находитесь в Visual Studio). Затем Visual Studio будет держать окно консоли открытым, пока вы не нажмете клавишу.

Примечание: Вы не можете отлаживать свой код в этот подход.

автор: Bhavik Patel

это ведет себя одинаково для Ctrl Ф5 или Ф5 . Место непосредственно перед концом Main метод.

автор: user3484993

программа немедленно закрывается, потому что ничто не мешает ей закрываться. Вставить точку останова в return 0; или добавить Console.Read(); до return 0; для предотвращения закрытия программы.

автор: Robert Rouhani

Я предполагаю, что причина, по которой вы не хотите закрывать его в режиме отладки, заключается в том, что вы хотите посмотреть значения переменных и т. д. Поэтому, вероятно, лучше всего просто вставить точку останова при закрытии"> " основной функции. Если вам не нужно отлаживать, то Ctrl-F5-лучший вариант.

Читайте также: