#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int my_memcmp1(const void *p1, const void *p2, size_t count)//方法1
{
assert(p1);
assert(p2);
char *dest = (char *)p1;
char *src = (char*)p2;
while (count && (*dest == *src))
{
count--;
dest++;
src++;
}
if (count == 0)
return 0;
return *dest - *src;
}
int my_memcmp2(const void *p1, const void *p2, size_t count)//方法2
{
assert(p1);
assert(p2);
int ret = 0;
char *dest = (char *)p1;
char *src = (char*)p2;
while (count && (!(ret = (*dest - *src))))
{
dest++;
src++;
count--;
}
if (ret > 0)
{
return 1;
}
else if (ret < 0)
{
return -1;
}
return 0;
}
int main()
{
int arr1[] = {1,2,3,4,5,6};
int arr2[] = {1,2,3,1000000,5,6};//清楚内存是怎样放置的
int ret = my_memcmp2(arr1, arr2, 16);
printf("%d", ret);
system("pause");
return 0;
}
【C语言】【笔试题】模拟实现memcmp
最新推荐文章于 2023-04-21 11:54:08 发布