C - 使用" *"作为函数main()的参数

时间:2014-12-20 08:54:09

标签: c shell arguments main

当我想使用*作为函数main()的参数时,shell会将其扩展为当前目录中的所有文件。怎么避免这个?

int main(int argc, char *argv[])
{
    printf("%d\n", argc);
    for(int i=0; i<argc-1; i++)
    {
        printf("%s \n", argv[i]);
    }
    printf("\n");
}

在命令行中,它将输出:

atlas@localhost ~/D/P/C> ./expr 2 3 4 + *
13
./expr 
2 
3 
4 
+ 
Command.c 
Readlines.c 
catlas.h 
expr 
expr.c 
find 
find.c 

2 个答案:

答案 0 :(得分:4)

*是shell上下文中使用的特殊通配符。在实际传递给您的程序之前,shell将始终展开*。要将*的输入作为命令行参数字符,您可以将*括在引号中,例如"*"或使用转义字符\*,如其他人所建议的那样答案,以阻止扩张。

否则,在{em>传递到您的程序之前,shell正在执行*的扩展。

答案 1 :(得分:2)

您必须在提供输入时转义*\*。所以我们不得不提到不是外卡的外壳。这是个性格。