函数
void* Memmove(void* dest, const void* src, size_t num) {
assert(dest != NULL);
assert(src != NULL);
//倒序拷入避免内存重叠
char* d = (char*)dest + num - 1;
char* s = (char*)src + num - 1;
while (num) {
*d-- = *s--;
--num;
}
return dest;
}
测试
#include <stdio.h>
#include <assert.h>
int main() {
char str[] = "I love sock";
char str1[] = "sock";
Memmove(str, str1, strlen(str1) + 1);
printf("%s\n", str);
return 0;
}