库函数strcmp是用来比较字符串大小的
第一次代码:
int my_strcmp(const char* p1, const char* p2)
{
assert(p1 && p2);
while (1)
{
if (*p1 == *p2)
{
if (*p2 == '\0')
break;
p1++;
p2++;
}
else if (*p1 > *p2)
return 1;
else
return -1;
}
return 0;
}
改进:
int my_strcmp(const char* p1, const char* p2)
{
assert(p1 && p2);
while (1)
{
if (*p1 == *p2)
{
if (*p2 == '\0')
break;
p1++;
p2++;
}
else
return *p1-*p2;//标准库只需要判断大小,无需具体值,只是可能vs默认了是-1 0 1
}
return 0;
}
再修改:
int my_strcmp(const char* p1, const char* p2)
{
int ret = 0;
while (!(ret = *p1 - *p2) && *p2)//判断相等且都不是'\0'
++p1, ++p2;
if (ret < 0)
ret = -1;
else if (ret > 0)
ret = 1;
return(ret);
}
库函数strncmp是用来比较指定长度字符串大小
int my_strncmp(const char* p1, const char* p2,int count)
{
int ret = 0;
while (!(ret = *p1 - *p2) && *p2&&--count)//判断相等且都不是'\0'
++p1, ++p2;
if (ret < 0)
ret = -1;
else if (ret > 0)
ret = 1;
return(ret);
}