在C中访问命令行参数

时间:2010-07-26 18:44:19

标签: c command-line-arguments

如果这是一个菜鸟问题,请原谅我,但我是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 个答案:

答案 0 :(得分:18)

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

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

答案 1 :(得分:3)

多数民众赞成因为argv [0]是你的可执行文件的名称。

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

确保计数(argc)为3。

答案 2 :(得分:1)

您需要使用argv[1]argv[2]

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

答案 3 :(得分:1)

假设您的程序名称为noob.c,并使用gcc ./noob.c -o noob进行编译。 你必须做出这些改变。

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

你必须运行./noob 1 2并输出3

argc是3个命令行参数,您的输入将是命令行中的第1个和第2个值。

答案 4 :(得分:0)

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