【问题标题】:Error in handling command line arguments in C [duplicate]在 C 中处理命令行参数时出错 [重复]
【发布时间】:2018-12-15 22:58:02
【问题描述】:

我正在尝试编写一个 C 代码,它将以{num1} {operator} {num2} 的形式从命令行获取三个参数。对于除* 之外的所有运算符符号,它都可以正常工作。

这是验证这一点的代码:

#include <stdio.h>
int main(int argc, char const *argv[]) {
    printf("%d\n", argc);
}

我将其编译为gcc test.c -o test

然后当我使用./test 5 + 9 运行它时,它会给出预期的输出4。但是当我运行./test 5 * 9 时,它会给出25 作为输出。我在这里做错了什么?

【问题讨论】:

  • argc 是参数的数量。
  • 是的,我知道,只是对将* 作为命令行参数感到困惑

标签: c command-line-arguments


【解决方案1】:

* 被 shell 扩展为当前目录中所有文件的列表。如果您不想要外壳扩展,则需要(单)引用参数:

./test 5 '*' 9

【讨论】:

  • 谢谢!这在我的脑海中完全没有出现。只是出于好奇,有什么方法可以实现我最初想要的,而不是在 * 周围给出(单)引号?
  • @AbhisekChaudhuri 不幸的是,没有,反正不在你的程序中。
猜你喜欢
  • 2013-05-08
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 2013-02-18
  • 2014-12-19
  • 2012-11-25
  • 2014-01-13
  • 2011-01-17
相关资源
最近更新 更多