zoukankan      html  css  js  c++  java
  • memmove 的实现

    baidu的笔试题目

    用C语言实现一个公用库函数void * memmove(void *dest,const void *src,size_t n)。
    该函数的功能是拷贝src所指的内存内容前n个字节到dest所指的地址上。
    注意,作为公用库函数,请注意安全检查,注意处理内存区重合的情况。

    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;

  • 相关阅读:
    1.14验证码 彩票
    String代码示例
    1.13作业
    控制台输入人数和分数 自动判断最高分最低分
    对矩阵进行转置运算
    16、输入三角形的三个边,求其面积
    02、
    15、判断字符串是否回文——字符串
    14、求出最大元素的下标及地址值——数组
    13、字符串在指定的地方以及元素个数实行逆置——字符串
  • 原文地址:https://www.cnblogs.com/ransw/p/3984458.html
Copyright © 2011-2022 走看看