在C中硬编码或替换char ** argv

时间:2018-02-08 00:22:41

标签: c arrays string pointers main

我知道这会被认为是愚蠢的,但我正在尝试硬编码命令行参数,而不是修改一大堆代码仅用于测试目的。

现有的主要功能如下:

int main(int argc, char **argv) {
    Run run(argc, argv);

    return run.exec();
}

我想对参数进行硬编码...所以这意味着传递一个指向指针的新指针(就像运行函数所采用的那样)或者重写argv?

我试图传递的数据......

    char *config[] = {
         " --user=temp"
         " --name=Joe"
         " --id=20"
    };   

最安全,最“适当”的低音方法是什么? 我也希望数组大小是动态的,所以我不必在调用函数时手动定义argc。

我是指针和C的新手,所以欢迎任何帮助!

1 个答案:

答案 0 :(得分:4)

这只是一个“字符串数组”:

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]