现在的位置: 首页 > 综合 > 正文

[微软面试100题] memmove

2013年10月26日 ⁄ 综合 ⁄ 共 385字 ⁄ 字号 评论关闭

题目

用C 语言实现函数void * memmove(void *dest, const void *src, size_t n)。memmove 函数的功能是拷贝src 所指的内存内容前n 个字节到dest 所指的地址上。

代码

void * memmove(void *dest, const void *src, size_t n)
{
    if (dest==NULL || src == NULL) error(“NULL pointers”);
    byte * psrc = (byte*)src;
    byte * pdest = (byte*)dest;
    int step = 1;
    if (dest < src + n)
    {
        psrc = (byte*)(src+n-1);
        pdest = (byte*)(dest+n-1);
        step = -1;
    }
    for (int i=0; i<n; i++)
    {
        pdest = psrc;
        pdest += step;
        psrc += step;
    }
    return pdest;
}

抱歉!评论已关闭.