C strcmp无法与空间进行比较

时间:2014-12-10 13:08:53

标签: c strcmp

我试着看看公式[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; 
      }
    }
}

4 个答案:

答案 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] == ' ')