首先明确函数含义:
strcmp为比较函数,函数原型为int strcmp(const char * src, const char * dst)比较过程中优先比较字符串的ASCIIZ值(从左到右比较,直至出现不同字符或'/0'为止)
当src<dst时,返回值为负数;
当src=dst,返回值为0;
当src>dst,返回值为正数。
下面给出实现函数的代码:
第一种方式:
char *my_strcmp(const char* src, const char* dst)
{
assert(src);
assert(dst);
while (*src != '/0' && *dst != '/0' && *src = *dst)
{
src++;
dst++;
if (*src && *dst)
{
if (*src > *dst)
return 1;
else
return -1;
}
}
if (*src != '/0' && *dst != '/0' && *src == *dst)
return 0;
if (*src)
return -1;
if (*dst)
return 1;
}
第二种方式:
char *my_strcmp(const char* src, const char* dst)
{
int ret = 0;
while (!(ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
++src, ++dst;
if (ret < 0)
ret = -1;
else if (ret > 0)
ret = 1;
return(ret);
}