memmove用于从src拷贝count个字节到dest,如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中。但复制后src内容会被更改。但是当目标区域与源区域没有重叠则和memcpy函数功能相同。
#includ <stdio.h>
#include <assert.h>
char* my_memove(char* dest,char* src,size_count)
{
assert(dest);
assert(src);
if(dest<src)
{
while(count--)
{
*(char *)dest=*(char*)src;
dest=(char*)dest+1;
src=(char*)dest+1;
}
else if(dest>src)
{
dest=(char*)dest+count;
src=(char*)src+count;
while(count--)
{
*(char*)dest=*(char*)src;
dest=(char*)dest-1;
src=(char*)src-1;
}
}
}
int main()
{
char* p1="asdfdf";
char* p2="cdfghj";
scanf("%d",&count);
printf("%s",my_memmove(p1,p2,count);
return 0;
}