先让我们来看一下strcmp的函数参数设置
在这里我们可以看出,strcmp函数的两个参数为两个被const修饰的字符指针,所以在模拟实现的时候,我们要将参数也设置成这样子,我们再来看一下它的返回值:
从上表我们可以看出,当第一个字符串小于第二个字符串,会返回一个小于0的数字,相等则会返回数字0,大于则会返回一个大于0的数字 ,所以在模拟实现时,我选择直接返回两个指针解引用后做差,接下来看看代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<assert.h>
//模拟实现strcmp函数
int my_strcmp(const char* a,const char* b)
{
assert(a && b);
while (*a == *b && *a != 0 && *b !=0)
{
a++;
b++;
}
return (int)(*a - *b);//这里相减后强转为int类型
}
void test()
{
char atm[] = "abc";
char arr[] = "abc";
int i = my_strcmp(atm, arr);
if (i > 0)
{
printf(">\n");
}
else if (i < 0)
{
printf("<\n");
}
else
{
printf("=\n");
}
}
int main()
{
test();
return 0;
}