在 C 中硬编码或替换 char **argv
Posted
技术标签:
【中文标题】在 C 中硬编码或替换 char **argv【英文标题】:Hardcoding or substituting char **argv in C 【发布时间】:2018-07-18 10:26:00 【问题描述】:我知道这样做会被认为是愚蠢的,但我正在尝试对命令行参数进行硬编码,而不是仅出于测试目的而修改一大堆代码。
现有的主要功能如下:
int main(int argc, char **argv)
Run run(argc, argv);
return run.exec();
我想硬编码参数...所以这意味着将新指针传递给指针(因为这是 run 函数所采用的)或重写 argv?
我试图传递的数据...
char *config[] =
" --user=temp"
" --name=Joe"
" --id=20"
;
什么是最安全和最“正确”的低音确认方式来做到这一点? 我还希望数组大小是动态的,因此在调用函数时不必手动定义 argc。
我是指针和 C 的新手,所以欢迎任何帮助!
【问题讨论】:
编辑您的问题以包括 IDE、OS 等,因为答案取决于这些 如果你打算使用exec*
-family,你的argv
变量中的最后一个元素应该是NULL
,别忘了。
@stackptr IDE、操作系统等与什么有什么关系?
@Rob 大多数 IDE 都有一个对话框,您可以在其中输入命令行参数的内容。每个 IDE 都有不同的实现方式
Run run(argc, argv);
是 C 吗?看起来像 C++。
【参考方案1】:
这只是一个“字符串数组”:
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]
。
【讨论】:
谢谢。我不是 NULL 终止数组,所以感谢初学者。我会只使用 sizeof 来确定 argc 吗? @user2815333 好吧,您知道参数的数量,因此您可以...使用该数字。但是是的,您可以使用sizeof
做一些技巧来让编译器弄清楚。以上是关于在 C 中硬编码或替换 char **argv的主要内容,如果未能解决你的问题,请参考以下文章
用 std::vector<std::string> 替换命令行参数 int argc 和 char** argv
H.264格式,iOS硬编解码 以及 iOS 11对HEVC硬编解码的支持
char* argv[] 如何在 c/c++ 中工作? [复制]
C++ - char** argv 与 char* argv[]
指向 char 指针数组的指针与指向 char 指针的指针(或 char** argv 与 char* (*argv)[])