void *memmove(void *dest, const void *src, size_t n) 的实现

来源:互联网 发布:淘宝充值平台进价表 编辑:程序博客网 时间:2024/04/25 08:01

#include <stdio.h>
#include <string.h>


void test(const char* src,size_t n)
{
    while( n-- != 0)
    {
        printf("%c ",*src++);
    }
}


void* memmove(void* dest,const void* src,size_t n)
{
    if(dest == NULL && src == NULL)
    {
        return NULL;
    }
    char* dptr = dest;
    const char* sptr = src;
    if(sptr < dptr)
    {
        sptr += n;
        dptr += n;
        while(n-- != 0)
        {
            *--dptr = *--sptr;
        }
    }
    else
    {
        while(n-- != 0)
        {
            *dptr++ = *sptr++;
        }
    }
    return dptr;
}




int main()
{
    char buf[32]="xia";


    char* res = NULL;
    res = memmove(&buf[2],buf,strlen(buf));


    if(res == NULL)
    {
        printf("fun memmove error\n");
        return -1;
    }
    test(buf,sizeof(buf)/sizeof(buf[0]));
    return 0;
}

0 0