我有一个很奇怪的问题。我通过以下命令在我的Objective-C程序的命令行中传递多个参数。

gcc -framework Foundation main.m calculator.m -o prog1

./prog1 3 + 5 / 8

当我打印argcargv[]时,它给我以下正确的输出
argc = 6

argv[] = prog1,3,+,5,/,8

当我在输入中插入“*”时出现问题:./prog1 3 + 5 / 8 * 8然后它给了我非常奇怪的输出
argc = 12
argv [] = 3,+,5,/,8,calculator.h,calculator.m,main.m,prog1,8

怎么了

最佳答案

您有2个选择

  • 使用反斜杠(\*)或
  • 来转义每个特殊符号
  • 用双引号将参数引起来(如"*"所示)。
  • 关于macos - 将星号传递给命令行程序会使文件名出现在argv中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36231066/

    10-16 02:25