memmove实现

来源:互联网 发布:mac launchpad 添加 编辑:程序博客网 时间:2024/04/28 08:21
void*  memmove(void *dest, const void *src,size_t n){    if (n == 0)    {        return 0;    }    /* 验证参数 */    if (dest == NULL)  return 0;    if (src == NULL)    return 0;    char *psrc = (char*)src;     char *pdest = (char*)dest;      /*检查是否有重叠问题 */    if((dest <= psrc) || (pdest >= psrc + n))        {                /*正向拷贝*/                for(int i=0; i < n; i++)                {                        *pdest = *psrc;                        psrc++;                        pdest++;                }        }        else        {                /*反向拷贝*/                psrc += n;                pdest += n;                for(int i=0;i<n;i++)                {                        psrc--;                        pdest--;                        *pdest = *psrc;                }        }     return dest;} 

0 0
原创粉丝点击