模拟实现memmove
#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
#include<math.h>
char* my_memove( void* dest, const void* str, int count)
{
assert(dest&&str);
char* pdest = (char*)dest;
const char* pstr = (const char*)str;
if (pstr >= pdest || pdest >= pstr + count)
{
while (count-- != 0)
{
*pdest++ = *pstr++;
}
}
else
{
pdest = pdest + count - 1;
pstr = pstr + count - 1;
while (count--)
{
*pdest-- = *pstr--;
}
}
return dest;
}
int main()
{
char str1[100] = "abcdefghij";
printf("str1 = %s\n", str1);
my_memove(str1 + 2, str1, 4);
printf("str1 = %s\n", str1);
system("pause");
return 0;
}