【发布时间】:2020-05-24 02:30:29
【问题描述】:
在我的 C 程序中比较字符串时使用“*”时遇到问题。是否有禁止使用它的规则?这是一段麻烦的代码:
else if(strcmp(argv[i], "*") == 0)
{
printf("pos MULT: %d", pos);
result = dubStack[pos-1] * dubStack[pos - 2];
pos += 1;
}
当使用上面的代码运行程序时,我的打印语句不运行并且不计算结果。 但是,如果我更改字符串比较中的字符(如下所示;将 * 更改为 m),则会执行正确的操作并且打印语句可以正常工作。使用 * 时有什么遗漏吗?
else if(strcmp(argv[i], "m") == 0)
{
printf("pos MULT: %d", pos);
result = dubStack[pos-1] * dubStack[pos - 2];
pos += 1;
}
【问题讨论】:
-
也许符号'*'在使用过的shell中有特殊含义。
-
用调试器检查
argv[i]的值(或打印它),正如弗拉德所说,你的外壳可能已经替换它 -
这能回答你的问题吗? Unable to pass '#' character as a command-line argument(字符不同,shell 有同样的问题)
-
是的,你的程序很好;你的壳在拧你。如何解决?你不能。这是很久以前做出的 Unix 基本设计决策,恕我直言,这是错误的,无法更改。
标签: c string if-statement command compare