如果这是一个菜鸟问题,请原谅我,但我是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这样的小输入也是如此。这里有什么问题?
答案 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 5
,argv
变为myapp
,4
,{{ 1}})。