当我想使用 *
作为函数 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
最佳答案
*
是在 shell 上下文中使用的特殊通配符。在 实际 传递给您的程序之前,shell 总是会展开 *
。要将 *
的输入作为命令行参数字符,您可以将 *
括在引号中,例如 "*"
或使用转义符字符 \*
,如其他答案中所建议的那样,停止扩展。
否则,*
的扩展在 传递给您的程序之前由 shell 执行。
关于c - 使用 "*"作为函数 main() 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27578605/