#include <stdio.h>
#include <string.h>
#include <assert.h>
void* my_memmove(void* dest, const void* src, size_t count)
{
void* ret = dest;
assert(dest != NULL);
assert(src != NULL);
if (dest < src)
{
//从前向后拷贝
while (count--)
{
*(char*)dest = *(char*)src;
++(char*)dest;
++(char*)src;
}
}
else
{
//后->前
while (count--)
{
*((char*)dest + count) = *((char*)src+count);
}
}
return ret;
}
int main()
{
int arr[] = { 1, 2 ,3, 4 ,5 ,6, 7, 8, 9, 10 };
int i = 0;
//前->后
my_memmove(arr, arr + 2, 5 * sizeof(int));
for (i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
/*
//后->前
my_memmove(arr+5, arr+2, 5*sizeof(int));
for (i = 0; i < 10; i++)
{
printf("%d ",arr[i]);
}
*/
return 0;
}
day16_7_C语言_模拟实现memmove
最新推荐文章于 2023-10-28 02:15:21 发布