Страницы

Поиск по вопросам

четверг, 5 декабря 2019 г.

Использование system(“pause”)

#cpp


Существует проблема, которую не могу уже решить дня 2 минимум. Чем объявлять system("pause")
в C++? Пробовал и , и , и , весь гугл обшарил, даже на getchar()
пробовал заменить system, но после отладки проги консоль в упор закрывается :(    


Ответы

Ответ 1



Внимание! Правильный ответ на вопрос был уже дан пользователем Андрей: функция system объявлена в заголовочном файле cstdlib (или stdlib.h). Пожалуйста, не добавляйте новых ответов вида "я подключил N и все заработало", где N - очередной заголовок, косвенно включающий cstdlib. В Microsoft Visual Studio, например, при запуске по Ctrl-F5, IDE сама будет запускать программу, как будто бы в ней ожидается ввод в конце. Еще варианты решения: MS-овская функция _getch() из std::cin >> c, где c - это char c. Правда, придется нажимать еще и enter. Breakpoint на закрывающей скобке int main(...) { }. Можно еще что-нибудь придумать.

Ответ 2



Прекратите заниматься ерундой с вписыванием в код каких-то system("pause") и прочего мусора. Ничего подобного в консольном приложении быть не должно. Если вы занимаетесь разработкой консольного приложения под MS Visual Studio, то идите в настройки проекта, раздел Linker и установите настройку SubSystem в значение CONSOLE После чего возьмите в привычку запускать свое приложение не в отладочном режиме ("Start Debugging", F5), а в режиме "без отладчика" ("Start Without Debugging", Ctrl+F5). Консольное окно в таком случае не будет закрываться само, а будет оставаться на экране до следующего нажатия клавиши. Запуск же программ под отладчиком (F5) предназначен для ситуаций, когда у вас в коде есть точки останова, т.е. при запуске под отладчиком вас проблема автоматического закрытия окна волновать не должна вообще. В VS2017, начиная с определенной версии, появилась опция отладчика, которая предотвращает закрытие консольного окна по завершении программы, независимо от того, запускали ли вы вашу программу в режиме отладки

Ответ 3



Нужно подключать библиотеку cstdlib, т.к. system объявлена в ней. #include

Ответ 4



Скорее всего, вызов getchar() не срабатывает из-за того, что в буфере ввода уже есть некий символ. Обычно это перевод строки, оставшийся от scanf. Поэтому надо прочитать сначала его, а уже потом ещё один, который нажмёт пользователь: getchar(), getchar(); Ну и естественно, это дело надо удалить, как только оно перестанет быть нужным. PS: Если при вводе пользователь перед enter'ом нажмёт пробел, то всё равно не сработает.

Ответ 5



//попробуй так-действие тожесамое #include using namespace std; int main(){ ... cout << "Для продолжения нажмите Enter\n"; cin.get();//можно несколько раз, для верности return 0; }

Ответ 6



если builder то #include

Ответ 7



#include using namespace std; Как же вы товарищ самую стандартную библиотеку iostream -то не попробовали??? Она ещё cin cout и cerr позволяет использовать (может вы не знаете), а глядя на подсказки интеллисенса (он для C++ появился в VS2012) у неё вообще много чего есть (вернее конкретно в std). PS: для новичков: студийную библиотеку надо подключать в коде после не-студийных, а то так и будет писать типа "переменная system не найдена ..." - сами виноваты. Это ведь C++ ёкарный бабай.

Ответ 8



У меня тоже была такая проблема. Я решил её путём включения в код директиву Windows.h Для тех кто не сталкивался с этой ошибкой: Не пользуйтесь как аргумент теми словами, которые написаны в книжках. Наша цель решить проблему. Не смотря на то что оператор system включён в стандартную библиотеку stdlib.h вам придётся временами включать директиву Windows.h для адекватной работы оператора system. #include #include using namespace std; int main() { cout << "\n Hello World!" << endl; system("pause"); return 0; }

Ответ 9



попробуй Директиву #include и вставь system("pause\n"); Для оператора getch(); директива #include !

Ответ 10



У меня такая проблема решилась вот так #include using namespace std; int main(int argc, char **argv) { cout << "После выполнения, вaс ожидает пауза" << endl; system("pause"); return 0; } Т.е. нужно добавить входные аргументы для функции main(), а именно int main(int argc, char **argv) { }

Комментариев нет:

Отправить комментарий