在 C 中以编程方式调用 main(int argc, char **argv)
Programmatically calling main(int argc, char **argv) in C
假设我有一个文件 test.c
,它接受一个文本文件并开始如下:
int main(int argc, char **argv)
{
...
return 0;
}
我通常会按如下方式编译文件并执行二进制文件:./test input.txt
.
现在,我希望在同一文件的另一个函数中以编程方式调用 main
函数。我该如何进行?
您可以按如下方式进行:
#include <stdio.h>
int main(int argc, char *argv[]);
void func()
{
char *argv[] = { "./test", "another.txt", NULL };
main(2, argv);
}
int main(int argc, char *argv[])
{
if (argc > 1) {
printf("Processing %s...\n", argv[1]);
}
/* ... */
func();
return 0;
}
这应该输出如下内容:
Processing input.txt...
Processing another.txt...
小心无限递归!
假设我有一个文件 test.c
,它接受一个文本文件并开始如下:
int main(int argc, char **argv)
{
...
return 0;
}
我通常会按如下方式编译文件并执行二进制文件:./test input.txt
.
现在,我希望在同一文件的另一个函数中以编程方式调用 main
函数。我该如何进行?
您可以按如下方式进行:
#include <stdio.h>
int main(int argc, char *argv[]);
void func()
{
char *argv[] = { "./test", "another.txt", NULL };
main(2, argv);
}
int main(int argc, char *argv[])
{
if (argc > 1) {
printf("Processing %s...\n", argv[1]);
}
/* ... */
func();
return 0;
}
这应该输出如下内容:
Processing input.txt...
Processing another.txt...
小心无限递归!