在c ++中使用strcmp比较两个char变量显示从'char'到'const char *'的无效转换

时间:2014-07-31 09:58:55

标签: c++ strcmp

这是我的代码。

if(strcmp(s[0][i],s[rock][j])==0)
{           
     count[i]+=1;
     rock++;
}

5 个答案:

答案 0 :(得分:3)

strcmp函数比较两个字符串。如果您想比较两个char变量,只需使用==!=

答案 1 :(得分:1)

很明显,对象s[0][i]s[rock][j]的类型为char。那是他们不是字符串而是两个字符。您可以使用运算符==

对它们进行比较

例如

if ( s[0][i] == s[rock][j] )

我也建议用这两个表达式语句替换

 count[i]+=1;
 rock++;

 count[i]++;
 rock++;

 ++count[i];
 ++rock;

在这种情况下,代码看起来更具可读性。

答案 2 :(得分:1)

我会假设这个答案是s被声明为:

char s[100][100]; // or any arbitrary numeric limits

在这种情况下,你无法使用strcmp比较s [0] [i]和s [rock] [j],因为它们是字符,而不是字符指针。

相反,你可以写:

if(s[0][i] == s[rock][j])

答案 3 :(得分:1)

char是原始数据类型 - 您可以直接比较char

...
if (s[0][i] == s[rock][j])
{
...

strcmp函数需要字符串,即char *,因此会出现错误消息。您可以比较s变量中的整个字符串:

...
if (strcmp(s[0], s[rock]) == 0)
{
...

答案 4 :(得分:0)

char进行比较时,请不要使用字符串比较功能! strcmp函数的原型是 -

int strcmp(const char *s1, const char *s2); // where s1 and s2 are strings

因此,要与字符进行比较,只需使用==!=

即可
if(s[0][i]==s[rock][j])
{
 count[i]++;
 rock++;
}