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 
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;}