一、memcmp的注意事项
1、头文件为:<string.h>
2、函数声明为:int memcmp(const void* ptr1, const void* ptr2, size_t num);
3、num为字节个数
4、如果全部匹配,则将num个字节比较完才结束函数,不会因遇到'\0'而结束
二、memcmp的模拟实现
#include <stdio.h>
#include <assert.h>
int my_memcmp(const void* ptr1, const void* ptr2, size_t num)
{
assert(ptr1 && ptr2);//用断言判断ptr1和ptr2是否为空指针
//类型转换
const char* p1 = (const char*)ptr1;
const char* p2 = (const char*)ptr2;
//比较
while ((num--) && (*p1++ == *p2++))
{
;
}
return *--p1 - *--p2;//返回差值
}
int main()
{
char str1[] = "abcdf";
char str2[] = "abcdf";
int ret = my_memcmp(str1, str2, 3);
//结果为:==
if (ret > 0)
{
printf(">\n");
}
else if (ret < 0)
{
printf("<\n");
}
else
{
printf("==\n");
}
return 0;
}
附:若有不足,望指出
^_^谢谢阅读^_^