函数名: memmove
头文件: <string.h>
函数原型: void *memcpy(void *str1, const void *str2, size_t n)
功 能: 从存储区 str2 复制 n 个字节到存储区 str1。
参 数: str1 — 指向用于存储复制内容的目标数组,类型强制转换为 void* 指针。
str2 — 指向要复制的数据源,类型强制转换为 void* 指针。
n — 要被复制的字节数。
返回值: 该函数返回一个指向目标存储区 str1 的指针。
函数表达:
#include<stdio.h>
#include<assert.h>
void* my_memmove(void* dest, const void* src, size_t count)
{
void* ret = dest;
assert(dest != NULL);
assert(dest != 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 i = 0;
int arr3[] = {1,2,3,4,5,6,7,8,9,10};
my_memmove(arr3 + 2,arr3, 20);
for (i = 0; i < 10; i++)
{
printf("%d ", arr3[i]);
}
return 0;
}