当我不使用引号时,argc到底是如何工作的?

问题描述 投票:1回答:1

我的代码非常简单。

#include <stdio.h>

int main(int argc, char **argv)
{
    printf("%d\n", argc);
    return 0;
}

它打印的是 17 在我输入

./a.out 1 2 3 + *

是不是应该打印 6 而不是?程序的行为与预期的一样,如果我将 '' 在每个参数周围,除了 ./a.out. 这很奇怪,因为我可以在不使用引号的情况下使用一些带有标志的程序()'', "").

c main argc
1个回答
4
投票

如果你不引用或转义 *,它被shell在形成程序参数时作为通配符展开。它被当前目录中的所有名字所取代(除了那些以 .).

当你运行这个程序时,你的目录中必须有12个文件和子目录。

© www.soinside.com 2019 - 2024. All rights reserved.