позволить пользователю снова запустить программу в c? - PullRequest
0 голосов
/ 11 сентября 2009

Я написал программу на с. Однако, как только программа закончена, она останавливается (дух). Есть ли простой скрипт, который позволяет мне запускать программу заново?

Ответы [ 5 ]

3 голосов
/ 11 сентября 2009

Почему бы не использовать цикл (for, while) в самом основном: (если программа проста!)

main()
{

 while( Exit condition)
 {
  //logic
 }
}
2 голосов
/ 11 сентября 2009
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 голос
/ 11 сентября 2009

Если вы действительно хотите перезапустить программу без выхода (хотя я не понимаю, почему):

  1. Сохраните argv (и я предполагаю, что argv[0] фактически указывает на ваш исполняемый файл, даже если это не гарантируется), если вам нужны те же аргументы командной строки.
  2. Рассмотрите возможность сохранения среды, если вы можете изменить ее, а также хотите, чтобы это повторилось.
  3. man execv или execle. Просто замените текущий запущенный образ новым, с той же командной строкой

Честно говоря, зацикливание было бы проще и могло бы иметь ту же семантику, если вы избегаете глобального состояния или можете изменить его.

0 голосов
/ 12 сентября 2009
#include <stdlib.h>
#ifdef WIN32
#define EXECUTABLE ".exe"
#else
#define EXECUTABLE
#endif
int main(void) {
    for (;;) system("executable_in_c" EXECUTABLE);
    return 0;
}

Скомпилируйте эту программу, переименуйте ваш старый исполняемый файл в "executetable_in_c [.exe]"; переименуйте его в имя вашего старого исполняемого файла ... вуаля!

0 голосов
/ 11 сентября 2009

Конечно, но как заставить пользователя запускать этот скрипт? Не проще ли было бы пользователю просто перезапустить программу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...