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