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

Compare two char variable using strcmp in c++ shows invalid conversion from 'char' to 'const char*'

本文关键字:char c++ const 转换 无效 显示 比较 strcmp 变量 两个      更新时间:2023-10-16

这是我的代码。

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

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

很明显,对象s[0][i]s[rock][j]具有类型char。也就是说,它们不是字符串,而是两个字符。您可以使用操作符==

对它们进行比较。例如

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

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

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

 count[i]++;
 rock++;

 ++count[i];
 ++rock;

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

对于这个答案,我将假设s被声明为:

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

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

你可以这样写:

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

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

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

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

...
if (strcmp(s[0], s[rock]) == 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++;
}