【发布时间】:2013-07-15 12:48:31
【问题描述】:
我编写了一个 C 程序,通过将表达式作为命令行参数传递来评估反向抛光符号,但是当我传递 *(用于乘法)时,它传递了该文件夹中的所有文件名。
例如我通过了这个:
./rpn 10 20 30 + *
当我打印所有参数时,结果是,
10
20
30
+
gcd
gcd.c
gcd.c~
rpn
rpn.c
rpn.c~
swapmacro
swapmacro.c argc :12
【问题讨论】:
-
您使用什么程序将
*传递给您的程序?听起来您只是不知道如何使用您正在使用的任何程序来启动您的 C 程序。 -
我正在使用 ubuntu 12.04 终端来运行我的程序,你问的是这个吗?
-
它被称为 文件名扩展:让我们在你的 shell 中试试这个代码
for i in *;do echo $i;done; -
没有。终端必须显示某个程序的输出,并且您必须将输入发送到某个程序。我在问那个程序是什么。我敢打赌,如果您不知道那是什么程序,那么您也不知道如何使用它。这很好值得学习。您正在使用的程序通常称为“shell”。你应该明智地选择你使用的 shell,而不是盲目地接受你平台的默认值,你应该了解所有你可以了解的内容。
-
@ParagJain 是的,我想用这个小代码来演示一下,你可能喜欢阅读3.5 Shell Expansions它被称为文件名扩展。
标签: c command-line-arguments postfix-notation