在C中访问命令行参数

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

#include  #include  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这样的小输入也是如此。这里有什么问题?

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

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

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

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

并确保计数(argc)为3。

你会想要使用argv[1]argv[2]

argv中的第一个元素( argv[0] )是命令本身 。 这将是您的程序可执行名称…

假设您的程序名称是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个值。

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