命令行参数计数

Raf*_*mal 5 c command-line-arguments

这是一个简单的C程序,它打印传递给它的命令行参数的数量:

#include <stdio.h>

int main(int argc, char *argv[])
{
    printf("%d\n", argc);
}
Run Code Online (Sandbox Code Playgroud)

当我给出输入

file_name *
Run Code Online (Sandbox Code Playgroud)

它在我的电脑(操作系统Windows 7)中打印623而不是2.但它在其他情况下提供了正确的输出.是*命令行参数的保留字符?请注意,此程序为以下输入提供正确的输出:

file_name *Rafi
Run Code Online (Sandbox Code Playgroud)

输出= 2

Mar*_*c B 10

在Unix命令行上,shell负责处理通配符.yourapp *将运行yourapp,并将当前目录中所有非隐藏文件的名称作为参数传递.在你的情况下,这是622个文件(623 = 622个文件+程序的名称).

在Windows上,应用程序负责通配符解析,因此对于程序名称(argv [0]),argc为2,1,对于通配符,argc为1(argv [1] =*);