我试着看看公式[i]是否是一个空格,如果它是数字应该为零。但显然它无法比较它们:S我是C的新手,有人知道这个问题吗?
注意:这不是我的整个代码,只是了解问题的基本部分。
char formula[50] = "1 4 + 74 /";
int number = 0;
for (int i = 0; i != strlen(formula); i++)
{
if(!isdigit(formula[i]))
{
if (strcmp(&formula[i], " ") == 0)
{
number = 0;
}
}
}
答案 0 :(得分:3)
失败,因为字符串" 4 + 74 /"
不等于字符串" "
。
我认为你真正想要比较的是字符,就像
一样简单if (formula[i] == ' ')
{
// ...
}
为了完整起见,有一种方法可以使用函数strncmp
对两个字符串的前缀执行字符串比较,您可以在其中指定要匹配的字符串的字符数。
if (strncmp(&formula[i], " ", 1))
{
// ...
}
这相当于上面的caracter比较。
答案 1 :(得分:1)
那是因为他们不平等。
当您执行&formula[i]
时,您会获得指向位置i
处的角色的指针。从该位置查看的字符串将一直持续到终止'\0'
字符,即不为1个字符的字符串。
直接进行比较:
if(formula[i] == ' ')
答案 2 :(得分:0)
strcmp
比较两个字符串(两个const char*
s以\0
结尾)而不是两个字符。在您的情况下,请使用
if(formula[i]==' ')
答案 3 :(得分:0)
& formula [i]为您提供指向i分配位置的指针。
要解决此问题,您必须执行以下操作:
if (formula[i] == ' ')