C语言实现memmove

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;

}

猜你喜欢

转载自blog.csdn.net/M_jianjianjiao/article/details/80373050