我正在编写一个有关反向波兰表示法的C程序,该程序通过命令行参数获取其操作数和运算符。但是当乘法运算符'*'出现时,事情就出错了,我也不知道为什么。
这是要调试的小程序。
测试
int main(int argc, char **argv)
{
printf("%d\n", argc);
return 0;
}
// run case result
./test a b 3
./test * 66
那么,为什么' * '参数会导致错误的结果呢?
在*
做了壳水珠。因此它将扩展到当前目录中的所有文件,这将是程序的参数,您的目录中有65个文件。您可以查看运行情况echo *
您需要单引号中的*
as ./test '*'
(也可以使用双引号),这将防止shell扩展*
。*
在这种情况下,为您的程序提供了A ,shell删除了单引号。
如果要评估表达式,可以执行
./test 3 2 '*'
在这种情况下,您的程序会收到3个另外的参数,分别argv[1]
是3
,argv[2]
is2
和argv[3]
is*
或者,您可以执行以下操作:
./test '3 2 *'
在这种情况下,您的程序会收到1个附加参数,argv[1]
将是字符串3 2 *
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句