当我不使用引号时,argc 究竟如何工作?
How exactly does argc work when I don't use quotation marks?
我的代码很简单:
#include <stdio.h>
int main(int argc, char **argv)
{
printf("%d\n", argc);
return 0;
}
输入
后打印17
./a.out 1 2 3 + *
它不应该打印 6
吗?如果我将 ''
放在除 ./a.out
之外的每个参数周围,程序的行为就符合预期。这很奇怪,因为我可以在不使用引号的情况下使用一些带有标志的程序(''
, ""
).
如果您不引用或转义 *
,它会在形成程序参数时被 shell 扩展为通配符。它被替换为当前目录中的所有名称(以 .
开头的除外)。
当您运行执行此操作时,您的目录中必须有 12 个文件和子目录。
我的代码很简单:
#include <stdio.h>
int main(int argc, char **argv)
{
printf("%d\n", argc);
return 0;
}
输入
后打印17
./a.out 1 2 3 + *
它不应该打印 6
吗?如果我将 ''
放在除 ./a.out
之外的每个参数周围,程序的行为就符合预期。这很奇怪,因为我可以在不使用引号的情况下使用一些带有标志的程序(''
, ""
).
如果您不引用或转义 *
,它会在形成程序参数时被 shell 扩展为通配符。它被替换为当前目录中的所有名称(以 .
开头的除外)。
当您运行执行此操作时,您的目录中必须有 12 个文件和子目录。