0

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

例如我通过了这个:

./rpn 10 20 30 + *

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

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

2 回答 2

4

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

./rpn 10 20 30 + "*"
于 2013-07-17T05:29:55.073 回答
3

您需要*通过引用它"*"或通过转义它来逃避 eg\*

的扩展*由 shell 完成(在启动程序之前)。阅读高级 Bash 脚本指南等。

于 2013-07-17T05:29:41.833 回答