将 ptr1 指向的内存块的前 num 字节数与 ptr2 指向的第一个字节数进行比较,如果它们都匹配,则返回零,如果不匹配,则返回一个不同于零的值,表示哪个值更大。 请注意,与 strcmp 不同,该函数在找到\0后不会停止比较
以下是函数的声明
int memcmp ( const void * ptr1, const void * ptr2, size_t num );
1.memcmp函数的参数及其返回值
1.1参数
PTR1
指向内存块的指针。
PTR2
指向内存块的指针。
num
要比较的字节数。
1.2返回值
ptr1>ptr2==>大于零
ptr1<ptr2==>小于零
ptr1=ptr2==>等于零
2.函数的使用
int arr1[10] = { 1,2,3,4,4 };
int arr2[10] = { 1,2,3,4,5 };
int ret = memcmp(arr1, arr2, 20);
printf("%d", ret);
3.函数的模拟实现
int my_memcmp(const void* ptr1, const void* ptr2, size_t num)
{
assert(ptr1 && ptr2);
while ((*(char*)ptr1) == (*(char*)ptr2)&&num!=0)
{
(char*)ptr1 += 1;
(char*)ptr2 += 1;
num--;
}
if (num = 0)
{
return 0;
}
if ((*(char*)ptr1) > (*(char*)ptr2))
{
return 1;
}
else
{
return -1;
}
}