在比较我的C程序中的字符串时使用“ *”时遇到麻烦。有禁止使用它的规则吗?这是麻烦的代码:
else if(strcmp(argv[i], "*") == 0)
{
printf("pos MULT: %d", pos);
result = dubStack[pos-1] * dubStack[pos - 2];
pos += 1;
}
当使用上面的代码运行程序时,我的打印语句无法运行,并且不会计算结果。但是,如果我更改字符串比较中的字符(如下所示;将*更改为m),则会执行正确的操作,并且print语句会起作用。使用*时,我缺少什么吗?
else if(strcmp(argv[i], "m") == 0)
{
printf("pos MULT: %d", pos);
result = dubStack[pos-1] * dubStack[pos - 2];
pos += 1;
}
C字符串中的*
没什么特别的:"*"
是长度为1的无害字符串。
相反,*
由命令外壳扩展为当前目录中文件和目录名称的排序列表。为防止这种情况,必须在命令行上将此字符加引号。这是执行此操作的不同方法:
$ myprog 1 1 \*
$ myprog 1 1 '*'
$ myprog 1 1 "*"