#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void* Mymemmove(void* dest, const void* src, size_t num) {
if (dest == NULL || src == NULL) {
return NULL;
}
//如果目标地址小于原地址或者大于原地址加拷贝字节的地址,则不影响结果
if (dest<src || (char*)dest>((const char*)src) + num) {
char* temp = dest;
const char* ret = src;
while (num--) {
*temp++ = *ret++;
}
return dest;
}
//如果内存重叠,则从后向前拷贝
else {
char* temp = dest;
const char* ret = src;
while (num--) {
*(temp + num) = *(ret + num);
}
return dest;
}
}
int main() {
char str[] = "abcdef";
char* p = (char*)Mymemmove(str+2, str, 3);
printf("%s\n", p);
system("pause");
return 0;
}
C语言实现memmove
最新推荐文章于 2024-03-18 06:45:00 发布