Я написал программу в c. Однако, как только программа завершена, она останавливается (duh). Есть ли простой сценарий, который позволяет мне снова запустить программу?позволяют пользователю снова запускать программу в c?
ответ
Конечно, но как бы вы попросили пользователя запустить этот скрипт? Разве не проще, если бы пользователь просто перезапустил программу?
нет простого способа запустить сценарий заново? – HollerTrain
Почему бы не использовать петлю (для, в то время) в главном себе: (если программа просто!)
main()
{
while(Exit condition)
{
//logic
}
}
char cont_prog = 'n';
do {
/* main program in here */
printf("Do you want to start again? (y/n): ");
cont_prog = getchar();
} while (cont_prog == 'y' || cont_prog == 'Y');
По сути, вы хотите, чтобы поставить вас главный прогу в цикле, задавая если они хотят продолжить. Вам приходится иметь дело с тем, что пользователь вводит слишком много данных (например, они печатают «да»), и ваш буфер заполняется в следующий раз через цикл.
+ 1 для дополнительного улучшения кода. Кроме того, правила Futurama –
\ m/for Fry! Я понимаю, что этот фрагмент довольно рудиментарный, но пользователь был неопределенным, поэтому я не могу дать гораздо больше. –
спасибо за код однако, это побуждает меня начать снова, и когда я набираю 'y', он ничего не делает :( – HollerTrain
Если вы действительно хотите, чтобы повторно запустить программу без выхода (хотя я не могу понять, почему):
- Сохранить
argv
(и я буду считать, чтоargv[0]
фактически указывает на свой исполняемый файл, даже если это не гарантируется), если вы хотите использовать те же аргументы командной строки. - Рассмотрите возможность сохранения среды, если вы можете ее изменить, а также хотите, чтобы она повторялась.
man execv
илиexecle
. Просто замените текущее запущенное изображение новым, имеющим ту же командную строку
Откровенно говоря, цикл будет проще и может иметь одинаковую семантику, если вы избегаете глобального состояния или устраиваете возможность повторного набора Это.
#include <stdlib.h>
#ifdef WIN32
#define EXECUTABLE ".exe"
#else
#define EXECUTABLE
#endif
int main(void) {
for (;;) system("executable_in_c" EXECUTABLE);
return 0;
}
компиляции этой программы, переименовать старый исполняемый на "executable_in_c [.exe]"; переименуйте это в имя своего старого исполняемого файла ... вуаля!
- 1. Позволяет пользователю выбрать, запускать ли программу снова?
- 2. Хотите дать пользователю возможность снова запустить программу
- 3. Попытка запускать/скомпилировать мою программу на C++
- 4. Как запускать и постоянно постоянно запускать C-программу с PHP?
- 5. позволяют пользователю находить другого пользователя в радиусе
- 6. Как снова и снова запускать AsyncTask?
- 7. позволяют пользователю входить только с одного компьютера
- 8. Как регулярно запускать программу?
- 9. Рок, Бумага, Ножницы не позволяют пользователю выиграть
- 10. yfiles не позволяют пользователю изменять размеры узлов
- 11. PHP Exec не запускать программу
- 12. позволяют пользователю загружать динамический файл csv asp.net
- 13. Heroku Heroku лаборатории: позволяют пользователю окр-компиляции
- 14. позволяют пользователю изменять файлы по FTP
- 15. Как запускать аудиофайл снова и снова в ios sdk
- 16. Как дать возможность снова запустить программу
- 17. C++. Только авторизованные пользователи AD должны иметь возможность запускать программу
- 18. Как запускать программу Chokidar programmaticaly
- 19. ошибка, не запускать программу (windows)
- 20. Можно ли запускать программу (java \ c \ etc) в этих ситуациях?
- 21. автоматически запускать программу при запуске
- 22. Зачем мне снова запускать команду «webpack» снова n?
- 23. Создайте автономную программу в C++
- 24. Пропускает линию, когда я запускаю программу снова
- 25. Автоматически запускать программу в новом экземпляре CMD
- 26. не может запускать простую программу в CLION
- 27. привилегии таблицы postgres не позволяют пользователю создавать/выбирать вид
- 28. позволяют пользователю вводить текст в поле через xml или код
- 29. позволяют пользователю возвращать предыдущую страницу в новом окне
- 30. позволяют запускать код javascript прямо в visual studio
Какова ваша среда? Unix, Windows? – Shizzmo
unix, однако он также должен работать в окнах :( – HollerTrain
Существует много «почему». Позвольте мне предположить. Перезапуск: сбрасывает глобальное состояние, освобождает память обратно в ОС, «исправляет» все утечки памяти, позволяет вам передавать информацию когда вы его использовали, и давайте рассмотрим только один путь, который проще, чем считать два. Я все для него. –