传递*作为命令行参数

时间:2013-07-17 05:28:07

标签: c command-line-arguments postfix-notation

我编写了一个C程序,通过将表达式作为命令行参数传递来评估反向抛光表示法,但是当我传递*(用于乘法)时,它传递该文件夹中的所有文件名。

例如我通过了这个:

./ rpn 10 20 30 + *

当我打印所有参数时,结果是,

 10
 20
 30
 +
 gcd
 gcd.c
 gcd.c~
 rpn
 rpn.c
 rpn.c~
 swapmacro
 swapmacro.c argc :12

2 个答案:

答案 0 :(得分:4)

这不是C问题。您正在使用Bash(或一些等效的shell),其中*会自动展开(在它到达您的程序附近之前)。你需要做这样的事情:

./rpn 10 20 30 + "*"

答案 1 :(得分:3)

你需要逃避*,例如引用它像"*"或像\*

一样转义它

*的扩展由shell完成(在启动程序之前)。阅读例如Advanced Bash Scripting guide