我正在学习C编程,我编写了示例代码来接受来自终端的参数并打印出参数。
我调用这样的程序:./ myprogram 1
我预计1会打印出参数长度而不是2.为什么会这样?参数“1”
后没有间距#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
printf("%d", argc);
return EXIT_SUCCESS;
}
答案 0 :(得分:7)
第一个参数argv[0]
是调用程序的名称。所以有两个参数,第二个,argv[1]
是“1”。
要明确编辑:应始终检查argc
。然而,不常见的是,argc
为0是完全合法的
例如,在Unix上,execvp("./try", (char **){NULL});
是合法的。
答案 1 :(得分:2)
“./ myprogram”算作第一个参数。