-2

我试图在另一个字符串(s2)中找到一个字符串(s1)的字符。

这是我的代码的一部分。

for(;i<strlen(s1);i++)
{
   int x=strchr(s2,s1[i]);
   if(x>0)
   count++;
}

但是在编译时我得到一个指向 strchr() 的错误并说

error: invalid conversion from ‘char*’ to ‘int’ [-fpermissive]

任何人都解释了使用 strchr() 函数有什么问题。

4

1 回答 1

2

赋值错误 strchr 不返回 int 但返回找到的字符串中第一个字符的地址:

int x=strchr(s2,s1[i]);

应该:

char* x = strchr(s2, s1[i]); 
//         ^ returns char* 

阅读手册

char *strchr(const char *s, int c);

返回值and函数返回一个指向匹配字符的指针,或者
如果没有找到该字符。终止的空字节被认为是字符串的一部分,因此如果 c 被指定为,这些函数将返回一个指向终止符的指针。 strchr()strrchr()NULL'\0'

所以:

if(x>0)

应该:

if(x != NULL)

要不就if(x)

于 2014-02-08T06:41:29.387 回答