代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
void*Memmove(void*dest, const void*src, int num)
{
assert(dest);
assert(src);
char*pdest = (char*)dest;
const char*psrc = (const char*)src;
if (pdest > psrc&&pdest < psrc + num)
{
//从后向前拷贝
pdest = pdest + num - 1;
psrc = psrc + num - 1;
while (num)
{
*pdest = *psrc;
pdest--;
psrc--;
num--;
}
}
else
{
//从前向后拷贝
while (num)
{
*pdest = *psrc;
psrc++;
pdest++;
num--;
}
}
return dest;
}
int main()
{
char str[20] = "abcde";
Memmove(str,str+1 , 3);
printf("%s", str);
system("pause");
return 0;
}
运行结果: