在 c++ 中使用 strcmp 比较两个 char 变量显示从 'char' 到 'const char*' 的无效转换
Compare two char variable using strcmp in c++ shows invalid conversion from 'char' to 'const char*'
这是我的代码。
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++;
}