Я новичок C. я запускаю программу C, но окно закрывается слишком быстро, прежде чем я могу что-либо увидеть. Как я могу приостановить окно?
автор: afuzzyllama
10 ответов
вы можете поставить
getchar();
перед возвратом из функции main. Это будет ждать ввода символов перед выходом из программы.
в качестве альтернативы вы можете запустить свою программу из командной строки, и вывод будет виден.
автор: Gavin H
Если вы хотите просто задержка закрытие окна без фактического нажатия кнопки ( getchar() способ), вы можете просто использовать sleep() метод; он принимает количество секунд вы хотите спать в качестве аргумента.
#include // your code here sleep(3); // sleep for 3 seconds
автор: George
это консольная программа, работающая в Windows? Если это так, запустите его с консоли, которую вы уже открыли. т. е. запустите «cmd», затем перейдите в свой каталог, который имеет.exe в нем (с помощью команды cd), затем введите имя exe-файла. Окно консоли останется открытым.
как поставить видео на паузу
автор: Dave
Если вы делаете программу окна консоли, вы можете использовать system («пауза»);
автор: r1cebank
в системах POSIX лучшее решение, похоже, использует:
#include pause ();
если процесс получает сигнал, эффект которого заключается в его завершении (обычно путем ввода Ctrl + C в терминале), то pause не возвратит и процесс эффектно будет прекращен этим сигналом. Более продвинутое использование-использовать функцию улавливания сигналов, вызываемую при получении соответствующего сигнала, после чего pause возвращает возобновление процесс.
Примечание: использование getchar() не будет работать стандартный ввод перенаправляется; следовательно, это более общее решение.
автор: vinc17
Я предполагаю, что вы находитесь в Windows. Вместо того, чтобы пытаться запустить программу, дважды щелкнув по ее значку или нажав кнопку в IDE, откройте командную строку, компакт-диск в каталог, в котором находится ваша программа, и запустите ее, введя ее имя в командной строке.
автор: mfonda
getch() также может использоваться, который определен в conio.h.
пример программы будет выглядеть следующим образом:
#include #include int main() < //your code getch(); return 0; >
getch() ждет ввода символов с клавиатуры (не обязательно вводить ключ).
автор: akashbhatia
вы также можете просто использовать system(«pause»);
автор: Daniel Gelling
хорошая работа я вспомнил о пакетных файлах DOS. Вообще не нужен Getchar (). Просто написать пакетный файл, чтобы изменить каталог (CD) в папку, где находится программа. введите имя программы exe и в следующей строке введите pause. пример:
автор: Tony Hudson
для Linux; getchar() все, что вам нужно.
Если вы находитесь на Windows, проверьте следующее, Это именно то, что вам нужно!
- функция kbhit () используется для определения, была ли нажата клавиша или нет.
- Чтобы использовать kbhit () в C или C++ prorams, вы должны включить файл заголовка «conio.ч.»
например, посмотрите, как это работает в следующем программа;
Как поставить программу на паузу, и как продолжить с паузы
//any_key.c #include #include int main() < //code here printf («Press any key to continue . . .n»); while (1) if (kbhit()) break; //code here return 0; >
когда я компилирую и запускаю программу,этой что я вижу.
только когда пользователь нажимает только одну клавишу с клавиатуры,kbhit() возвращает 1.
Источник: askdev.ru
Сделать паузу в программе — C#
Здравствуйте, нужно остановить программу на неопределенное время. Игрок должен нажать мышкой на панель (Panel) и вызвать обработку события. Можно ли как-нибудь остановить программу и дать игроку время на то, чтобы нажать на панельку? Thread.Sleep, как мне кажется, не самый лучший вариант.
while (!End) //пока не конец игры < if (!Playerturn) //если ходит комп < // компьютер рисует точки >else < //программа должна подождать, пока игрок нажмет на панельку //вот тут нужна пауза. >
Код к задаче: «Сделать паузу в программе»
Листинг программы
public void TimerStart(bool state) < var timer = new Timer < Interval = 1000 >; if (state) < timer.Tick += (s, e) =>< //Что происходит при тике >; timer.Start(); > else < timer.Stop(); >>
Источник: studassistent.ru
Консоль паузы в программе C ++
Какой лучший способ приостановить консоль в программах на C ++?
- с помощью cin.get()
- или используя system(«pause»)
- или используя функции C, такие как getch() или же getchar() ?
Правда ли, что использование system(«pause») приводит к непереносимому коду и не может работать в UNIX?
Является ли cin.get () лучше использовать для приостановки консоли?
Решение
Там может быть лучший способ (например, использование портативного cin.get() ), но хорошо путь не существует. Программа, которая выполнила свою работу, должна выйти и вернуть свои ресурсы компьютеру.
И да, любое использование system() приводит к непереносимому коду, так как параметр передается оболочке, которой принадлежит ваш процесс.
Наличие пауз-кода в вашем исходном коде рано или поздно вызывает неприятности:
- кто-то забывает удалить код приостановки перед регистрацией
- теперь все работающие товарищи должны задаться вопросом, почему приложение больше не закрывается
- История версий испорчена
Вместо этого изучите свою IDE. Вероятно, есть возможность не закрывать окно консоли после запуска. Если нет, то вам, как разработчику, стоит оправдать себя за то, что у вас всегда есть открытое окно консоли.
Кроме того, вы можете сделать это опцией программы, но я лично никогда не видел программу с опцией —keep-alive-when-dead ,
Мораль истории: Это проблема пользователя, а не проблема программы. Не портите свой код.
Другие решения
Если вы хотите написать переносимый код на C ++, я бы предложил использовать cin.get() ,
system(«PAUSE») работает в Windows, так как требует выполнения консольной команды с именем « PAUSE «Но я не уверен, что другие операционные системы, такие как Linux или другие производные Unix, поддерживают это. Так что это, как правило, непереносимо.
Так как C ++ уже предлагает cin.get() Я не вижу веской причины использовать C getch() ,
Какой лучший способ приостановить консоль в программах на C ++?
system(«pause»); а также getch(); (который происходит из мира DOS, IIRC) оба непереносимы.
Является ли cin.get () лучше использовать для приостановки консоли?
Как единственный портативный а также стандарт вариант, я бы сказал, что это так, но я лично считаю, что не следует писать интерактивные консольные программы, то есть программы, которые фактически приостанавливают консоль или запрашивают ввод (если нет действительно хорошая причина для этого, потому что это делает сценарии оболочки намного сложнее). Консольные программы должны взаимодействовать с пользователем через аргументы командной строки (или, по крайней мере, такой тип взаимодействия должен быть по умолчанию).
На всякий случай, если вам нужно приостановить программу для моей программы, которая запускается из IDE, и немедленно закрывается, но мне не хватает времени, чтобы увидеть, причина результата — не делай этого. Просто настройте свою IDE или запустите приставка программы прямо из консоли.
лучший способ во многом зависит от целевой платформы (платформ), использования отладки или выпуска и т. д.
Я не думаю, что есть один Лучший но для «принудительного» ожидания сценария ввода типа достаточно общим способом, особенно при отладке (обычно это компилируется или выводится на основе NDEBUG или же _DEBUG ), вы можете попробовать std::getline следующее
inline void wait_on_enter()
С нашей без «введите, чтобы продолжить», по мере необходимости.
Здесь нет хорошо способ сделать это, но вы должны использовать портативное решение, поэтому избегайте system() звонки, в вашем случае вы могли бы использовать cin.get() или же getch() как вы упомянули в своем вопросе, также есть один совет. Делать все паузы, контролируемые одним (или очень немногими) определениями препроцессора.
Где-то в глобальном файле:
#define USE_PAUSES #ifndef _DEBUG //I asume you have _DEBUG definition for debug and don’t have it for release build #undef USE_PAUSES #endif
#ifdef USE_PAUSES cin.get(); #endif
Это не универсальный совет, но вы должны защитить себя от паузы в сборках релиза, и они должны иметь простое управление, мой упомянутый глобальный файл не может быть настолько глобальным, потому что изменения в нем могут привести к очень долгой компиляции.
Я просто хочу добавить, что есть способ получить то, что вы хотите, но для этого потребуется использовать какую-нибудь стороннюю библиотеку (или что вы сами пишете код, зависящий от платформы).
Насколько мне известно, самым большим недостатком cin является то, что вы должны нажать Return, а не только клавишу.
Предполагая, что у вас есть слушатель клавиш, вы можете довольно легко написать функцию, которая ждет, когда пользователь нажмет любой ключ. Однако поиск независимого от платформы слушателя ключей не является тривиальной задачей и, скорее всего, потребует загрузки частей более крупной библиотеки.
Я думаю о чем-то вроде:
char wait_for_key() < int key; while ( ! (key == key_pressed(ANY)) ) < this_thread::yield(); >return convert_virtual_key_to_char(key); >
Фактическая функция, очевидно, будет сильно отличаться от того, что я написал, в зависимости от используемой вами библиотеки.
Я знаю, что в следующих библиотеках есть списки ключей (не стесняйтесь добавлять больше в редактирование, если вы знаете что-либо.):
Я всегда использовал пару строк кода, которые очищают входной поток от любых символов, а затем ждут, пока ввод игнорируется.
void pause()
И тогда, когда мне это понадобится в программе, у меня есть собственная pause (); функция, без накладных расходов на системную паузу. Это действительно проблема только при написании консольных программ, которые вы хотите оставить открытыми или фиксированными в определенной точке.
Это работает для меня.
void pause() < cin.clear(); cin.ignore(numeric_limits::max(), ‘n’); std::string dummy; std::cout
Источник: web-answers.ru