我在c写了一个程序。但是一旦程序完成,它就会停止(duh)。是否有一个简单的脚本允许我让用户重新启动程序?
答案 0 :(得分:3)
为什么不在main中使用loop(for,while):(如果程序很简单!)
main()
{
while( Exit condition)
{
//logic
}
}
答案 1 :(得分:2)
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');
基本上,您希望将主要编程放在循环中,询问用户是否要继续。您必须处理输入太多数据的用户(例如,他们输入“是”),并且下次循环时缓冲区已满。
答案 2 :(得分:1)
如果你真的想在不退出的情况下重新启动程序(虽然我看不出原因):
argv
(如果您需要相同的命令行参数,我会假设argv[0]
实际指向您的可执行文件,即使无法保证)。man execv
或execle
。只需使用具有相同命令行的新映像替换当前运行的映像坦率地说,循环会更容易,并且如果你避免全局状态,或者安排能够重新设置它,它可以具有相同的语义。
答案 3 :(得分:0)
当然可以,但是如何让用户运行该脚本?让用户简单地重新运行程序会不会更简单?
答案 4 :(得分:0)
#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]”;将此名称重命名为旧可执行文件的名称...瞧!