我编写了一个C程序,通过将表达式作为命令行参数传递来评估反向抛光表示法,但是当我传递*(用于乘法)时,它传递该文件夹中的所有文件名。
例如我通过了这个:
./ rpn 10 20 30 + *
当我打印所有参数时,结果是,
10
20
30
+
gcd
gcd.c
gcd.c~
rpn
rpn.c
rpn.c~
swapmacro
swapmacro.c argc :12
答案 0 :(得分:4)
这不是C问题。您正在使用Bash(或一些等效的shell),其中*
会自动展开(在它到达您的程序附近之前)。你需要做这样的事情:
./rpn 10 20 30 + "*"
答案 1 :(得分:3)
你需要逃避*
,例如引用它像"*"
或像\*
*
的扩展由shell完成(在启动程序之前)。阅读例如Advanced Bash Scripting guide。