как закрыть консольное приложение c
Как немедленно закрыть консольное приложение С++?
В последнее время я пытаюсь изучить С++ из этого веб-сайта. К сожалению, всякий раз, когда я пытаюсь запустить один из примеров кода, я вижу, что эта программа открыта примерно на полсекунды, а затем сразу же закрывается. Есть ли способ немедленно закрыть программу, чтобы я мог видеть плоды моих усилий?
ОТВЕТЫ
Ответ 1
Изменить: Как справедливо отмечает Чарльз Бейли в комментарии ниже, это не сработает, если в stdin есть символы, буферизированные, и на самом деле нет хорошего способа обойти это. Если вы используете прилагаемый отладчик, предлагаемое решение John Dibling, вероятно, является самым чистым решением вашей проблемы.
Тем не менее, я оставлю это здесь, и, возможно, кто-то найдет это полезным. Я часто использовал его в качестве быстрого взлома при написании тестов во время разработки.
В конце вашей функции main вы можете вызвать std::getchar();
Ответ 2
Если вы используете Visual Studio, и вы запускаете консольное приложение из среды IDE:
нажатие CTRL-F5 (запуск без отладки) запустит приложение и откроет окно консоли, пока вы не нажмете любую клавишу.
Ответ 3
Решение James работает для всех платформ.
В качестве альтернативы на Windows вы также можете добавить следующее перед возвратом из функции main :
Ответ 4
Если вы используете Microsoft Visual С++ 2010 Express и столкнулись с проблемой: CTRL + F5 не работает для того, чтобы консоль открылась после завершения программы, посмотрите этот поток MSDN.
Вероятно, ваша IDE настроена на закрытие консоли после запуска CTRL + F5; на самом деле, «пустой проект» в Visual С++ 2010 закрывает консоль по умолчанию. Чтобы изменить это, сделайте так, как предположил Microsoft-модератор:
Пожалуйста, щелкните правой кнопкой мыши имя вашего проекта и перейдите на страницу «Свойства», пожалуйста, перейдите в «Свойства конфигурации» → «Линкер» → «Система», выберите «Консоль» (/SUBSYSTEM: CONSOLE) в раскрывающемся списке SubSystem. Поскольку по умолчанию проект Empty не указывает его.
Ответ 5
Ответ 6
Почему бы не просто запустить программу с консоли, а запустить программу из cmd.exe, если вы используете Windows. Таким образом, окно остается открытым после завершения программы.
[EDIT]: Когда я использую KDevelop4, на вкладке внизу среды IDE имеется полностью установленный экземпляр Bash (CLI Linux). Это то, что я использую в таких обстоятельствах.
Ответ 7
До конца кода вставьте эту строку:
Это будет держать консоль до тех пор, пока вы не нажмете клавишу.
Ответ 8
Вызвать cin.get(); 2 раза:
Ответ 9
Если вы запустите свой код из компетентной среды разработки, например Code:: Blocks, среда IDE будет управлять консолью, которую она использует для запуска код, сохраняя его открытым, когда приложение закрывается. Вы не хотите добавлять специальный код, чтобы консоль открывалась, потому что это предотвратит его правильное функционирование, если вы используете его на самом деле, вне среды IDE.
Ответ 10
Если вы действительно отлаживаете свое приложение в Visual С++, нажмите F5 или зеленый треугольник на панели инструментов. Если вы на самом деле не отлаживаете его (у вас нет установленных точек останова), нажмите Ctrl + F5 или выберите «Начать без отладки» в меню (обычно это в меню «Отладка», которое, я согласен, сбивает с толку.) Это будет немного быстрее, и что более важно для вас, остановится в конце, если вам не придется менять свой код.
В качестве альтернативы откройте командную строку, перейдите в папку, в которой находится ваш exe, и запустите ее, набрав ее имя. Таким образом, когда он закончил выполнение командной строки, она не закрывается, и вы можете увидеть результат. Я предпочитаю оба этих метода добавлять код, который останавливает приложение так же, как и его завершение.
Ответ 11
Хорошо, я предполагаю, что вы работаете в Windows с помощью Visual Studio. почему? Хорошо, потому что если вы находитесь на какой-то ОС Linux, вы, вероятно, будете запускать ее с консоли.
В любом случае вы можете добавить crap в конец вашей программы, как предлагают другие, или просто нажать CTRL + F5 (начать без отладки), а Visual Studio покинет консоль до завершения.
Ответ 12
Добавьте следующие строки перед любой функцией exit() или перед любым return в main() :
Ответ 13
Просто добавьте следующее в конце своей программы. Он попытается зафиксировать некоторую форму ввода пользователя, таким образом, он не позволит автоматически закрывать консоль.
Ответ 14
Для Visual Studio (и только Visual Studio) следующий фрагмент кода дает вам приглашение «дождаться нажатия клавиши для продолжения», которое действительно ждет, когда пользователь будет явно нажимать новый ключ, сначала очистив входной буфер:
Обратите внимание, что для этого используется макрос tchar.h для совместимости с несколькими «наборами символов» (как их называет VС++).
Ответ 15
Вместо того, чтобы нажимать кнопку запуска, одновременно нажмите клавиши CTRL и F5, это даст вам нажать любую клавишу для продолжения сообщения. Или введите «(предупреждение использовать это только для тестирования не актуальных программ, поскольку антивирусы им не нравятся. )» в конце вашей основной функции, но: (предупреждение использовать это только для тестирования не реальных программ в качестве антивирусов дона ‘t нравится это. )
Ответ 16
Используйте #include «stdafx.h» и system(«pause»); так же, как и код ниже.
Ответ 17
Ответ 18
Вы даже можете объявить целое число в начале вашей функции main() (скажем int a; ) и поместить std::cin >> a; непосредственно перед возвращаемым значением. Таким образом, программа будет работать до тех пор, пока вы не нажмете клавишу и не войдете.
Ответ 19
Это работает хорошо:
Если вы сначала очистите буфер, это не будет проблемой при чтении следующего. По какой-то причине cin.ignore(1) не работает, оно должно быть 2.
Ответ 20
Все, что вам нужно сделать, установите переменную для x, затем просто введите это перед возвратом 0;
Ответ 21
Вы всегда можете создать пакетный файл. Например, если ваша программа называется helloworld.exe, некоторый код будет:
Ответ 22
Я помещаю точку останова при последнем возврате 0 программы. Он отлично работает.
Ответ 23
Ответ 24
Ответ 25
Я просто делаю это:
Примечание: очистка буфера cin и это необходимо только в том случае, если вы использовали cin в какой-то момент раньше в вашей программе. Кроме того, использование std:: numeric_limits:: max(), вероятно, лучше, чем INT_MAX, но оно немного многословно и обычно не нужно.
Ответ 26
Ответ 27
Аналогичная идея для ответа yeh, минимальная альтернатива.
Создайте пакетный файл со следующим содержимым:
Затем используйте командный файл.
Ответ 28
Я не заметил, что кто-то еще разместил это, так что вот оно.
Ответ 29
просто используйте cin.ignore() прямо перед возвратом 0; дважды
Ответ 30
Закрытие консольного приложения по требуемой кнопке
Как в С++ сделать консольное приложение, чтобы оно не закрывалось простым нажатием на кнопку (x) или ESC. А закрывалась, например, когда нажимаешь на клавиатуре кнопку (s). Использую Code::Blocs.
5 ответов 5
Как уже сказали лучше сделай в Win32 application, Консоли не будет, и следовотельно Х тоже, но его можно закрыть из диспетчера задач в процессах, но и для этого есть обход, почитах книгу, самоучить С++ «глазами хакера», там все детально описоно.
Надо создать приложение без окна. Пусть просто делает что-то в бэкграунде.
Можно попробовать установить клавиатурный хук WH_KEYBOARD_LL и в нем отслеживать нажатия клавиш и одновременно поставить обработчик на закрытие консоли SetConsoleCtrlHandler.
Всё ещё ищете ответ? Посмотрите другие вопросы с метками windows c++ консоль или задайте свой вопрос.
Похожие
Подписаться на ленту
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.11.10.40715
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как остановить немедленное завершение работы консольного приложения C++?
в последнее время я пытаюсь изучить C++ от этот сайт. К сожалению, всякий раз, когда я пытаюсь запустить один из примеров кода, я вижу, что программа открывается примерно на полсекунды, а затем сразу закрывается. Есть ли способ остановить программу от немедленного закрытия, чтобы я мог видеть плоды своих усилий?
30 ответов:
тем не менее, я оставлю это здесь, и, возможно, кто-то еще найдет это полезным. Я использовал его много как быстрый Хак видов, когда написание тестов во время разработки.
в конце main функция, вы можете вызвать std::getchar();
Если вы используете Visual Studio и запускаете консольное приложение из IDE:
клавишей CTRL-F5 (запуск без отладки) запустит приложение и будет держать окно консоли открытым, пока вы не нажмете любую клавишу.
решение Джеймса работает для всех платформ.
также на Windows вы также можете добавить следующее непосредственно перед возвращением из main функция:
Если вы используете Microsoft Visual C++ 2010 Express и столкнетесь с проблемой с CTRL+F5 не работает для сохранения консоли открытой после завершения программы, взгляните на этот поток MSDN.
вероятно, ваша IDE настроена на закрытие консоли после запуска CTRL+F5; фактически, «пустой проект» в Visual C++ 2010 закрывает консоль по умолчанию. Чтобы изменить это, сделайте так, как предложил модератор Microsoft:
Я обычно просто ставлю точку останова на main() закрывающая фигурная скобка. Когда конец программы будет достигнут любыми средствами, точка останова ударит, и вы можете ALT-Tab в окно консоли для просмотра вывода.
Почему бы просто не запустить программу из консоли ie запустить программу из cmd.exe, если вы используете Windows. Таким образом, окно остается открытым после завершения программы.
[EDIT]: когда я использую KDevelop4, есть полноценный экземпляр Bash (Linux CLI), работающий на вкладке в нижней части IDE. Это то, что я использую в таких обстоятельствах.
перед окончанием кода вставьте следующую строку:
это будет держать консоль, пока вы не нажмете клавишу.
Если вы запускаете свой код из компетентной IDE, например Code:: Blocks, IDE будет управлять консолью, которую он использует для запуска кода, сохраняя ее открытой при закрытии приложения. Вы не хотите добавлять специальный код, чтобы держать консоль открытой, потому что это помешает ей работать правильно, когда вы используете ее для реального, вне IDE.
хорошо, я предполагаю, что вы находитесь на Windows, используя Visual Studio. зачем? Ну, потому что если вы находитесь на какой-то ОС Linux, то вы, вероятно, будете запускать его с консоли.
в любом случае, вы можете добавить дерьмо в конце вашей программы, как другие предлагают, или вы можете просто нажать CTRL + F5 (запуск без отладки)и Visual Studio оставит консоль после завершения.
Если вы действительно отлаживаете приложение в Visual C++, нажмите F5 или зеленый треугольник на панели инструментов. Если вы на самом деле не отлаживаете его (у вас нет установленных точек останова), нажмите Ctrl+F5 или выберите «пуск без отладки» в меню (обычно это меню отладки, которое я согласен, сбивает с толку.) Это будет немного быстрее, и что более важно для вас, будет пауза в конце без необходимости изменения кода.
кроме того, откройте командную строку, перейдите в папка, в которой находится ваш exe, и запустите его, введя его имя. Таким образом, когда он закончит работу, командная строка не закрывается, и вы можете видеть вывод. Я предпочитаю оба этих метода для добавления кода, который останавливает приложение так же, как его закончил.
добавьте следующую строку в конце программы. Он будет пытаться захватить некоторую форму пользовательского ввода, таким образом, он останавливает консоль от автоматического закрытия.