【发布时间】:2017-08-28 21:24:41
【问题描述】:
如何将 bash 命令中的参数传递给 c 中的程序?
例如,如果我有一个看起来像这样的命令:
./c_program argument
如何在 C 程序本身中访问该参数? 我可以像在 bash 中那样只使用 $1 等变量吗?
【问题讨论】:
-
见
main(), argv, argc- 应该在任何C书籍的前几页 - 也可以使用您的问题标题通过互联网搜索确定
如何将 bash 命令中的参数传递给 c 中的程序?
例如,如果我有一个看起来像这样的命令:
./c_program argument
如何在 C 程序本身中访问该参数? 我可以像在 bash 中那样只使用 $1 等变量吗?
【问题讨论】:
main(), argv, argc - 应该在任何C 书籍的前几页 - 也可以使用您的问题标题通过互联网搜索确定
试试下面的代码,看看它在使用不同数量的参数时的表现:
#include <stdio.h>
int main(int argc, const char *argv[])
{
for (int i=0; i<argc; i++) {
printf("%s\n",argv[i]);
}
return 0;
}
【讨论】:
正如 Stephan Lechner 在他的代码中所述,您使用变量 argc 和 argv。首先,您的代码中必须有int main(int argc, char **argv) { 才能获取这些变量。 char **argv 可以不同,即char *argv[] 有效,const char *argv[] 也有效
char **argv 本质上是strings 的数组,但这种字符串更广为人知的是char array(“字符数组”的缩写)。你会想像这样使用它:
int option1 = 0;
for(int i = 1; i < argc; i++) {
if(strcmp(argv[i], "--the-input-you-were-expecting-here") == 0)
option1 = 1;
}
注意:argv 包含您的命令的 ./c_program 部分作为第一个索引,如果您的命令是 "./c_program --the-input-you-were-expecting-here",则此 argv[0] 的结果将等于 "./c_program"。
【讨论】: