#include <stdio.h>
#include <assert.h>
void* mymemmove(void* dest, void* src, size_t n)
{
void* ret = dest;
assert(dest != NULL && src != NULL);
if (dest <= src || (char*)dest >= ((char*)src + n))
{
while (n--)
{
*(char*)dest = *(char*)src;
dest = (char*)dest + 1;
src = (char*)src + 1;
}
}
else
{
src = (char*)src + n - 1;
dest = (char*)dest + n - 1;
while (n--)
{
*(char*)dest = *(char*)src;
dest = (char*)dest - 1;
src = (char*)src - 1;
}
}
return ret;
}
int main()
{
char str1[20] = "today is good";
char* p = (char*)mymemmove(str1 + 1, str1, strlen(str1) + 1);
printf("%s\n", p);
return 0;
}实现结果:

版权声明:本文为m0_62218217原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。