先来看一下strcmp函数的参数,他的返回值是int类型,小于0说明str1指向的字符串小于str2指向的字符串,大于0则相反,等于0则两个字符串相等。
int mystrcmp(char* p1, char* p2)
{
assert(p1 && p2);
int flag = 0;
while(*p1 == *p2)
{
if (*p1 == '\0')
{
return flag;
}
p1++;
p2++;
}
if (*p1 > *p2)
{
flag = 1;
return flag;
}
else if (*p1 < *p2)
{
flag = -1;
return flag;
}
}
在自己设计函数的时候,定义一个int变量flag用来表示返回值。
- 首先,要是*p1==*p2的话,就直接进入while循环,再进行判断*p1所指向的内容是不是‘\0’,若是的话,则函数结束,返回flag=0;
- 若不是‘\0’的话,则p1和p2两个++再比较下一个。以此类推。
- 若++后两者不相等,则进行if语句的判断,*p1>*p2则返回flag=1;反之返回flag=-1。