我使用Pocket C ++ for ANSI C.我尝试让strcmp()
在我的程序中运行:
#include <stdio.h>
#include <string.h>
int main ()
{
char str1 = 'C';
char str2[3] = {'A', 'B', 'C'};
int ret;
ret = strcmp(str1, str2[3]);
if (ret == 0) {
printf("The are equal");
} else {
printf("They are not equal");
}
return(0);
}
我收到了一个错误:
从'char'无效转换为'const char *'[-fpermissive]
以及其他错误。然后我尝试改变变量:
char const * var = 'C';
或const char * var = 'C';
它仍然不起作用,我做错了什么?
答案 0 :(得分:1)
我做错了什么?
您向strcmp()
函数发送了错误的参数。 以及 访问数组越界。
我认为你对strcmp()
函数的作用有误解。它不比较两个字符,而是比较两个字符串(具有空终止字符的字符数组)。
如果您只想比较两个字符串,则不需要任何函数,只需使用==
运算符:
ret = (str1 == str2[2]);
if (ret == 1)
{
printf("The are equal");
}
else
{
printf("They are not equal");
}
现在,何时使用strcmp()
功能?
当你想用这种方式比较两个(以空终止字符结尾的字符数组)字符串时使用它:
char str1[10] = { 'a', 'b', 'c', '\0'};
char str2[10] = "abc"; //here automatically null character is provided at the end
int ret;
ret = strcmp(str1 ,str2);
if (ret == 0)
{
printf("The are equal");
}
else
{
printf("They are not equal");
}
答案 1 :(得分:0)
C语言中strcmp函数的语法为:
int strcmp(const char * s1,const char * s2);
参数或参数: s1 =要比较的数组。 s2 =要比较的数组。
Return Value------Remarks 1. 0--------------if both strings are identical (equal) 2. negative -------if the ASCII value of the first unmatched character is less than second. 3. positive integer---if the ASCII value of the first unmatched character is greater than second.
您正在将一个字符变量与一个字符数组进行比较。所以修改它。