代码之家  ›  专栏  ›  技术社区  ›  PeterK

访问C中的命令行参数

  •  3
  • PeterK  · 技术社区  · 15 年前

    如果这是一个无意义的问题,请原谅我,但我是C的初学者,只学习一段时间。我试着写一个程序来总结两个数字(作为应用程序的参数提供)。代码如下:

    #include <stdlib.h>
    #include <stdio.h>
    
    int main( int argc, char** argv)
    {
       int a = atoi(argv[0]);
       int b = atoi(argv[1]);
       int sum = a+b;
       printf("%d", sum);
       return 0;
    }
    

    但我得到了不正确的结果——即使是5和10这样的小输入,也会有巨大的数字。这里怎么了?

    5 回复  |  直到 12 年前
        1
  •  18
  •   torak    15 年前

    程序的第一个参数是程序本身的名称。尝试使用以下方法。

    int a = atoi(argv[1]); 
    int b = atoi(argv[2]); 
    
        2
  •  3
  •   bits    15 年前

    这是因为argv[0]是可执行文件的名称。

    您应该使用argv[1]和argv[2]。

    确保计数(argc)为3。

        3
  •  1
  •   Reed Copsey    15 年前

    你会想用的 argv[1] argv[2] .

    argv中的第一个元素( argv[0] command itself . 这将是您的程序可执行文件名…

        4
  •  1
  •   Praveen S    15 年前

    假设您的程序名为 noob.c 你用 gcc ./noob.c -o noob . 您必须进行这些更改。

    int a = atoi(argv[1]); 
    int b = atoi(argv[2]);
    

    你必须运行它 ./noob 1 2 瞧,输出将是 3 .

    argc是3,即命令行参数的数目,您的输入将是命令行中的第一个和第二个值。

        5
  •  0
  •   Alexander Gessler    15 年前

    那是因为 argv[0] 是程序名,而不是第一个参数(即如果运行 myapp 4 5 , argv 变成 myapp , 4 , 5 )