在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 5
, argv
变为myapp
, 4
)。