strcmp():字符串比较函数,

功能:C/C++函数,比较两个字符串,涉及对两个字符串对应的字符逐个比较,直到发现不匹配为止,先不匹配较小的就小,大的就大,如果一个字符串是另一个的前面的一部分,那也认为它小于另一个字符串,因为它的NULL出现的更早。设这两个字符串为str1,str2,

            若str1==str2,则返回零;

            若str1>str2,则返回正数;

            若str1<str2,则返回负数。

      

原型: int strcmp( const char *str1,const char *str2)

返回值:原则上是0,正数和负数,不过有时候也是返回两个字符的ASCII值之差

注意:1)strcmp()函数比较的是两个字符串,例如数组,字符串常量等,不能比较数字等其他形式的          参数 ;

      2)函数返回值是int型,而不是char*,两个字符串是常量形式加const;

      3)在这里str1,str2不用断言,因为两个字符串有可能是空,但一般不这么写,用时判断下,否则         没什么太大的意义;

My code :

#include <stdio.h>
int  my_strcmp(const char* str1,const char* str2) 
{
	const char *s1 = str1;
	const char *s2 = str2;
	while (*s1||*s2 )      //判断空

	{
		if (*s2 == '\0' || *s1 > *s2)
		{
			return 1;
		}
		else if (*s1 == '\0' || *s1 < *s2)
		{
			return -1;
		}
		else
		{
			return 0;
		}
		s1++;
		s2++;
	}
		return 0;  // 是在两个字符串都为空时返回值 0
}

源码:

int strcmp(const char *str1,const char *str2)
{
    /*不可用while(*str1++==*str2++)来比较,当不相等时仍会执行一次++,
    return返回的比较值实际上是下一个字符。应将++放到循环体中进行。*/
    while(*str1 == *str2)
    {
        if(*str1 == '\0')
            return0;
         
        str1++;
        str2++;
    }
    return *str1 - *str2;
}