用C语言实现:strcmp(str1,str2)函数,比较两个字符串的大小(不区分大小写)

如果str1大,返回一个整数,如果str2大,返回一个负数,两个相等返回0。

注意:不能使用string.h头文件,即自己实现strcmp函数的功能,并且比较的两个字符串是不区分大小写的,请高手帮忙

字符串比较函数。

*str1 - *str2
这个就是用str1现在指向的字符减去str2指向的字符,将减后的结果返回。

比如:
*str1 = "abcd"
*str2 = "abca"
strcmp(str1,str2)的返回是多少?
str1++,str2++
a = a
str1++,str2++
b = b
str1++,str2++
c = c
str1++,str2++
d - a = 3

根据返回值你就知道字符串是否一样,哪个大。
得到3,数值大于0,说明第一个字符串大,等于0表示一样,小于0标识第二个字符串大
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-10-29
unsigned int strcmp(const char *str1, const char *str2) const
{
while(((*(str1++)==*(str2++))) && *str1 && *str2 );

return (*str1-*str2);
}

不区分大小写:可以把位于'A'-'Z'之间的字符加上32可变为'a'-'z'之间的字符后再调用上述函数。
第2个回答  2010-10-28
int __cdecl strcmp (const char * src, const char * dst)
{
int ret = 0 ;

while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *src)
++src, ++dst;

if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ;

return( ret );
}

不区分大小写:可以把位于'A'-'Z'之间的字符加上32可变为'a'-'z'之间的字符
第3个回答  2010-10-28
打开string.h,找到strcmp然后Copy
第4个回答  推荐于2018-05-10
int strcmp(char *str1, char *str2)
{
while(*str1 && *str2) {
if (*str1 > *str2)
return 1;
else if (*str1 < *str2)
return -1;
str1++, str2++;
}
if (*str1)
return 1;
if (*str2)
return -1;
return 0;
}本回答被网友采纳
相似回答