使用“*”作为函数 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() 的参数的主要内容,如果未能解决你的问题,请参考以下文章

函数用法进阶

thinkphp中的函数怎么传多个参数

将取消引用的指针作为函数参数传递给结构

数组作为函数参数怎么用C++

检索代理抓住车队运输机作为参数

python中如何将函数的运算结果传出来作为函数参数使用?