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

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

автор: Peter Mortensen

30 ответов

Edit: как справедливо указывает Чарльз Бейли в комментарии ниже, это не будет работать, если есть символы, буферизованные в stdin , и нет действительно хорошего способа обойти это. Если вы работаете с подключенным отладчиком, Джон Dibling это, вероятно, самое чистое решение вашей проблемы.

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

в конце main функция, вы можете вызвать std::getchar();

это получит один символ из stdin , таким образом, давая вам «нажмите любую клавишу, чтобы продолжить» вид поведения (если вы действительно хотите сообщение «нажмите любую клавишу», вам придется распечатать его самостоятельно).

Урок №5 по NC Studio. Восстановление выполнения программы после сбоя

вам нужно #include на getchar .

автор: James McNellis

Если вы используете Visual Studio и запускаете консольное приложение из среды IDE:

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

автор: nabulke

решение Джеймса работает для всех платформ.

также на Windows вы также можете добавить следующее непосредственно перед возвращением из main функция:

system(«pause»);

это будет работать pause команда, которая ждет, пока вы нажмете клавишу, а также отображает хорошее сообщение Press any key to continue . . .

автор: codaddict

Если вы используете Microsoft Visual C++ 2010 Express и запускаете проблему с сочетание клавиш Ctrl+клавишу F5 не работает для сохранения консоли открытой после завершения программы, взгляните на этот поток MSDN.

вероятно, ваша IDE настроена на закрытие консоли после запуска CTRL+F5; фактически, «пустой проект» в Visual C++ 2010 закрывает консоль по умолчанию. Чтобы изменить это, сделайте так, как предложил модератор Microsoft:

пожалуйста, правильно щелкните имя проекта и перейдите на страницу свойства, разверните свойства конфигурации -> Компоновщик -> система, выберите консоль (/SUBSYSTEM:CONSOLE) в раскрывающемся списке подсистема. Потому что по умолчанию пустой проект не указывает его.

автор: Mr. Underhill

обычно я просто ставлю точку останова на main() закрывающая фигурная скобка. Когда конец программы достигается любыми средствами, точка останова ударит, и вы можете ALT-Tab в окно консоли для просмотра вывода.

автор: John Dibling

Почему бы просто не запустить программу с консоли, т. е. запустить программу из cmd.exe, если вы используете Windows. Таким образом, окно остается открытым после завершения программы.

Читайте также:
Вставка в документ рисунков диаграмм и таблиц созданных в других режимах или другими программами

Как сделать чтобы консоль Python не закрывалась

[EDIT]: когда я использую KDevelop4, есть полноценный экземпляр Bash (Linux CLI), работающий на вкладке в нижней части IDE. Именно это я и использую в подобных обстоятельствах.

автор: Amos

вызов cin.get(); 2 раза:

//. cin.get(); cin.get(); return 0 >

перед окончанием кода вставьте следующую строку:

system(«pause»);

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

#include #include using namespace std; int main() < string s; cout > s; cout
автор: robert

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

хорошо, я предполагаю, что вы находитесь в Windows, используя Visual Studio. почему? Ну, потому что если вы находитесь на какой-то ОС Linux, то вы, вероятно, будете запускать его с консоли.

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

другой вариант, если вы хотите запустить отладочную версию и не добавить хрень ваш код, чтобы открыть окно консоли (Пуск -> Выполнить -> cmd) и перейдите в папку отладка выходной каталог. Затем просто введите имя исполняемого файла, и он запустит вашу отладочную программу в консоли. Затем вы можете использовать приложение Visual Studio для процесса или что-то еще, если вы действительно хотите.

автор: Polaris878

Если вы действительно отлаживаете приложение в Visual C++, нажмите клавишу F5 или зеленый треугольник на панели инструментов. Если вы на самом деле не отлаживаете его (у вас нет установленных точек останова), нажмите Ctrl+F5 или выберите «пуск без отладки» в меню (обычно это меню отладки, которое, я согласен, сбивает с толку.) Это будет немного быстрее, и что более важно для вас, будет пауза в конце без необходимости изменения кода.

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

автор: Kate Gregory

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

cin.get();

Источник: askdev.ru

1.1.9. Приостановка выполнения командных файлов

Для того, чтобы вручную прервать выполнение запущенного bat-файла, нужно нажать клавиши + или +. Однако часто бывает необходимо программно приостановить выполнение командного файла в определенной строке с выдачей запроса на нажатие любой клавиши. Это делается с помощью команды PAUSE. Перед запуском этой команды полезно с помощью команды ECHOинформировать пользователя о действиях, которые он должен произвести. Например:

Читайте также:
Что можно понимать под термином проект для программы adobe premiere

ECHO Вставьте дискету в дисковод A: и нажмите любую клавишу

КомандуPAUSEобязательно нужно использовать при выполнении потенциально опасных действий (удаление файлов, форматирование дисков и т.п.). Например,

ECHO Сейчас будут удалены все файлы в C:Мои документы!

ECHO Для отмены нажмите Ctrl-C

DEL «C:Мои документы*.*»

1.1.10. Вызов внешних командных файлов

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

REM Вывод списка log-файлов

:: Передача выполнения файлу f.bat

Однако в этом случае после выполнения вызванного файла управление в вызывающий файл не передается, то есть в приведенном примере команда

(и все следующие за ней команды) никогда не будет выполнена.

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

:: Вывод списка log-файлов

:: Передача выполнения файлу f.bat

В этом случае после завершения работы файла f.bat управление вернется в первоначальный файл на строку, следующую за командойCALL(в нашем примере это команда COPY A:*.* C:).

1.1.11. Операторы перехода goto и вызова call

Командный файл может содержать метки и командыGOTOперехода к этим меткам. Любая строка, начинающаяся с двоеточия :, воспринимается при обработке командного файла как метка. Имя метки задается набором символов, следующих за двоеточием до первого пробела или конца строки.

Пример 3. Пусть имеется командный файл следующего содержания:

ECHO Эта строка никогда не выполнится

После того, как в этом файле мы доходим до команды

его выполнение продолжается со строки

В команде перехода внутри файлаGOTOможно задавать в качестве метки перехода строку :EOF,которая передает управление в конец текущего пакетного файла (это позволяет легко выйти из пакетного файла без определения каких-либо меток в самом его конце).

Для перехода к метке внутри текущего командного файла кроме команды GOTO можно использовать и рассмотренную выше командуCALL:

CALL :метка аргументы

При вызове такой команды создается новый контекст текущего пакетного файла с заданными аргументами, и управление передается на инструкцию, расположенную сразу после метки. Для выхода из такого пакетного файла необходимо два раза достичь его конца. Первый выход возвращает управление на инструкцию, расположенную сразу после строкиCALL,а второй выход завершает выполнение пакетного файла. Например, если запустить с параметром»Копия-1″командный файл следующего содержания:

то на экран выведутся три строки:

Таким образом, подобное использование командыCALLпохоже на вызов подпрограмм в языках высокого уровня.

Источник: studfile.net

Как остановить консольное приложение C ++ от немедленного выхода?

В последнее время я пытался изучить C ++ из этот сайт . К сожалению, всякий раз, когда я пытаюсь запустить один из примеров кода, я вижу, что программа открывается примерно на полсекунды, а затем сразу же закрывается. Есть ли способ остановить немедленное закрытие программы, чтобы я мог видеть плоды моих усилий?

Читайте также:
Лучшие программы для низкоуровневого форматирования жесткого диска

Решение

Редактировать: Как справедливо указывает Чарльз Бейли в комментарии ниже, это не будет работать, если в буфере есть символы stdin и действительно нет хорошего способа обойти это. Если вы работаете с отладчиком, Предлагаемое решение Джона Диблинга это, вероятно, самое чистое решение вашей проблемы.

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

В конце вашего main функция, вы можете позвонить std::getchar();

Это получит одного персонажа из stdin таким образом, давая вам поведение типа «нажать любую клавишу для продолжения» (если вы на самом деле хотите сообщение «нажмите любую клавишу», вам придется распечатать его самостоятельно).

Вам нужно #include за getchar ,

Другие решения

Если вы используете Visual Studio и запускаете консольное приложение из IDE:

прессование CTRL-F5 (запуск без отладки) запустит приложение и будет держать окно консоли открытым, пока вы не нажмете любую клавишу.

Решение Джеймса работает для всех платформ.

Альтернативно на Windows Вы также можете добавить следующее непосредственно перед возвращением из main функция:

system(«pause»);

Это запустит pause команда, которая ждет, пока вы нажмете клавишу, а также отображает приятное сообщение Press any key to continue . . .

Если вы используете Microsoft Visual C ++ 2010 Express и столкнулись с проблемой с CTRL + F5 не работает держать консоль открытой после завершения программы, посмотрите на этот поток MSDN .

Вероятно, ваша IDE настроена на закрытие консоли после запуска CTRL + F5; фактически «пустой проект» в Visual C ++ 2010 по умолчанию закрывает консоль. Чтобы изменить это, сделайте так, как предложил модератор Microsoft:

Щелкните правой кнопкой мыши имя своего проекта и перейдите на страницу «Свойства», разверните «Свойства конфигурации» -> «Линкер» -> «Система», выберите «Консоль» (/ SUBSYSTEM: CONSOLE) в раскрывающемся списке «Подсистема». Потому что по умолчанию пустой проект не указывает его.

Я обычно просто ставлю точку останова на main() закрываю фигурную скобку. Когда конец программы достигнут любыми средствами, будет достигнута точка останова, и вы можете нажать ALT-Tab в окне консоли, чтобы просмотреть вывод.

Почему бы просто не запустить программу из консоли, т.е. запустить программу из cmd.exe, если вы используете Windows. Таким образом, окно остается открытым после завершения программы.

[EDIT]: когда я использую KDevelop4, на вкладке в нижней части IDE работает полноценный экземпляр Bash (Linux CLI). Что я и использую в подобных обстоятельствах.

Вызов cin.get(); 2 раза:

//. cin.get(); cin.get(); return 0 >

Перед концом вашего кода вставьте эту строку:

system(«pause»);

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

#include #include using namespace std; int main() < string s; cout > s; cout

Источник: web-answers.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru