Ubuntu将命令行arugments传递给C程序

ilo*_*arn 1 c

我正在学习C编程,我编写了示例代码来接受来自终端的参数并打印出参数.

我调用这样的程序:./myprogram 1

我期望1打印出参数长度而不是2.为什么会这样?参数"1"后没有间距

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {

    printf("%d", argc);

    return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

cni*_*tar 7

第一个参数argv[0]是调用程序的名称.所以有两个参数,第二个argv[1]是"1".

编辑

编辑以明确:argc应始终检查.然而,不常见的是argc,成为0 是完全合法的.
例如在Unix上,execvp("./try", (char **){NULL});是合法的.