【问题标题】:Pass argument from bash to C将参数从 bash 传递到 C
【发布时间】:2017-08-28 21:24:41
【问题描述】:

如何将 bash 命令中的参数传递给 c 中的程序?

例如,如果我有一个看起来像这样的命令:

./c_program argument

如何在 C 程序本身中访问该参数? 我可以像在 bash 中那样只使用 $1 等变量吗?

【问题讨论】:

  • main(), argv, argc - 应该在任何C 书籍的前几页 - 也可以使用您的问题标题通过互联网搜索确定

标签: c bash unix arguments


【解决方案1】:

试试下面的代码,看看它在使用不同数量的参数时的表现:

#include <stdio.h>
int main(int argc, const char *argv[])
{
    for (int i=0; i<argc; i++) {
        printf("%s\n",argv[i]);
    }
    return 0;
}

【讨论】:

    【解决方案2】:

    正如 Stephan Lechner 在他的代码中所述,您使用变量 argcargv。首先,您的代码中必须有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"

    【讨论】:

      猜你喜欢
      • 2015-06-27
      • 2021-07-11
      • 2019-03-11
      • 2015-07-27
      • 2017-12-05
      • 1970-01-01
      • 1970-01-01
      • 2011-10-10
      • 2018-03-11
      相关资源
      最近更新 更多