memcmp函数:
int memcmp(const void *buf1, const void *buf2, size_t count);
其作用类似于strcmp,也是逐字节比较大小,从低位到高位依次进行
接收void类型,所以需要强制类型转换后才能解引用操作。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<assert.h>
int MyMemcmp(const void *buf1, const void *buf2, size_t count)
{
assert(buf1 != NULL);
assert(buf2 != NULL);
while (count--)
{
//需要强制类型转换成char类型,进行字节位比较
if (*(char*)buf1 != *(char*)buf2) //如果该字节数字不同,返回其差值
{
return *(char*)buf1 - *(char*)buf2;
}
buf1 = (char*)buf1 + 1;
buf2 = (char*)buf2 + 1;
}
return 0; //相等返回0
}
int main()
{
int arr1[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int arr2[10] = { 1, 2, 3 };
printf("%d\n", MyMemcmp(arr1, arr2, 12));
return 0;
}