C语言 我如何定义argv[2]是一个列表按照下面的代码,并可以在运行时调用?



argv[2] -它包含一个项目列表,如0x1, 0x2, 0x3。

假设我们像这样执行程序(运行时)- ./program -i all

int main(int argc, const char* argv[])
{
// an array of character arrays.
argv[2] = { "0x1", "0x2", "0x3" }; //How can we define argv[2] by a variable name, like for example : argv[2] is all. So, all = { "0x1", "0x2", "0x3" }; 
return 0;
}

注:all也是argv[2].

/program -i all (where all = {"0x1" 0x2", "0x3"} .

程序需要显式检查字符串"all"在参数列表中,然后当它找到它时,做一些不同的事情。

int main(int argc, char* argv[])
{
int my_argc;
char **my_argv;
if (argc > 2) {
if (!strcmp(argv[2], "all")) {
my_argc = 3;
my_argv = (char *[]){ "0x1", "0x2", "0x3" };
} else {
my_argc = argc - 2;
my_argv = argv + 2;
}
int i;
for (i=0; i<my_argc; i++) {
handle_arg(my_argv[i]);
}
}
return 0;
}

您将把这些项传递给可执行文件:

./a.out 0x1 0x2 0x3

然后在你的程序中,argv[1] = "0x1" argv[2] = "0x2",等等

最新更新