使用“*”作为函数 main() 的参数
Posted
技术标签:
【中文标题】使用“*”作为函数 main() 的参数【英文标题】:Use "*" as argument of function main() 【发布时间】:2015-02-19 03:08:13 【问题描述】:当我想使用*
作为函数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
【问题讨论】:
你试过逃跑吗? 【参考方案1】:*
是在 shell 上下文中使用的特殊通配符。在*
实际上传递给你的程序之前,shell 总是会扩展它。要将*
的输入作为命令行参数字符,您可以将*
括在引号中,如"*"
或使用转义字符\*
,如其他答案中所建议的那样,以停止扩展。
否则,*
的扩展将由 shell 在 传递 到您的程序之前执行。
【讨论】:
@ATlaS 不客气。顺便说一句,您可以考虑 accepting 一个对您有帮助的答案。【参考方案2】:您必须在输入时转义 *
。 \*
。所以我们不得不提一下shell,它不是通配符。是性格。
【讨论】:
以上是关于使用“*”作为函数 main() 的参数的主要内容,如果未能解决你的问题,请参考以下文章