我有一个非常奇怪的问题。我通过以下命令在Objective-C程序的命令行中传递多个参数。
gcc -framework Foundation main.m calculator.m -o prog1
./prog1 3 + 5 / 8
当我打印argc
和argv[]
时,它会向我提供正确的输出
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
出了什么问题?
答案 0 :(得分:3)
您正在运行的shell将星号解释为file glob;在将参数传递给程序之前,它正在用当前目录中所有文件的名称替换该字符。
你需要转义星号\*
才能按字面顺序传递它。这也适用于shell解释的其他字符,例如引号"
和'
,反斜杠和&符号。
答案 1 :(得分:2)
您有2个选项
\*
)或"*"
)。