在比较 C 程序中的字符串时,我在使用"*"时遇到问题。是否有一些规则禁止使用它?这是一段麻烦的代码:
else if(strcmp(argv[i], "*") == 0)
{
printf("pos MULT: %d", pos);
result = dubStack[pos-1] * dubStack[pos - 2];
pos += 1;
}
使用上面的代码运行程序时,我的 print 语句不会运行,也不会计算结果。 但是,如果我更改字符串 compare 中的字符(如下所示;将 * 更改为 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 "*"