Bin*_*Bin 6 c shell command-line-arguments
我正在编写一个关于反向波兰表示法的C程序,它通过命令行参数获取操作数和运算符.但是当乘法运算符'*'出现时出现问题,我不知道为什么.
这是要调试的小程序.
test.c的
int main(int argc, char **argv)
{
printf("%d\n", argc);
return 0;
}
// run case result
./test a b 3
./test * 66
Run Code Online (Sandbox Code Playgroud)
那么为什么' * '论证会产生错误的结果呢?
nos*_*nos 11
在*做了壳水珠.因此,它将扩展到当前目录中的所有文件,这将是程序的参数,您的目录中有65个文件.如果你跑,你可以看到发生了什么echo *
你需要单引号,*因为./test '*'(双引号也可以),这将阻止shell扩展*.*在这种情况下,A 给你的程序,shell删除单引号.
如果你想评估表达式,你可以这样做
./test 3 2 '*'
Run Code Online (Sandbox Code Playgroud)
在这种情况下,你的程序接收3个额外的参数,分别argv[1]是3,argv[2]是2和argv[3]是*
或者你可以这样做:
./test '3 2 *'
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您的程序会收到1个附加参数,argv[1]将是字符串3 2 *