在 C 中硬编码或替换 char **argv
Hardcoding or substituting char **argv in C
我知道这样做会被认为是愚蠢的,但我正在尝试对命令行参数进行硬编码,而不是仅出于测试目的修改一大堆代码。
现有主要功能如下:
int main(int argc, char **argv) {
Run run(argc, argv);
return run.exec();
}
我想对参数进行硬编码...所以这意味着传递一个指向指针的新指针(因为这是 运行 函数所采用的)或重写 argv?
我要传递的数据...
char *config[] = {
" --user=temp"
" --name=Joe"
" --id=20"
};
什么是最安全和最 "proper" 低音 ackwards 的方法来做到这一点?
我还希望数组大小是动态的,这样我就不必在调用函数时手动定义 argc。
我是指针和 C 的新手,欢迎任何帮助!
这只是一个 "array of strings":
char *my_argv[] = {
"myprogram", // most programs will ignore this
"--user=temp",
"--name=Joe",
"--id=20",
NULL
};
Run run(4, my_argv);
return run.exec();
不要忘记程序名称本身也算作一个参数,并且在最后一个之后应该是一个 NULL。
当然可以,例如,如果您不想硬编码程序名称,则可以将 "myprogram"
更改为 argv[0]
。
我知道这样做会被认为是愚蠢的,但我正在尝试对命令行参数进行硬编码,而不是仅出于测试目的修改一大堆代码。
现有主要功能如下:
int main(int argc, char **argv) {
Run run(argc, argv);
return run.exec();
}
我想对参数进行硬编码...所以这意味着传递一个指向指针的新指针(因为这是 运行 函数所采用的)或重写 argv?
我要传递的数据...
char *config[] = {
" --user=temp"
" --name=Joe"
" --id=20"
};
什么是最安全和最 "proper" 低音 ackwards 的方法来做到这一点? 我还希望数组大小是动态的,这样我就不必在调用函数时手动定义 argc。
我是指针和 C 的新手,欢迎任何帮助!
这只是一个 "array of strings":
char *my_argv[] = {
"myprogram", // most programs will ignore this
"--user=temp",
"--name=Joe",
"--id=20",
NULL
};
Run run(4, my_argv);
return run.exec();
不要忘记程序名称本身也算作一个参数,并且在最后一个之后应该是一个 NULL。
当然可以,例如,如果您不想硬编码程序名称,则可以将 "myprogram"
更改为 argv[0]
。