• strcpy,memcpy,memset函数实现


     strcpy 实现,只能拷贝字符串

    char* strcpy(char* des,const char* source)
    {
      char* r=des;  
    assert((des != NULL) && (source != NULL));
     while((*des++ = *source++)!='');
     return r;
    }

    memcpy 实现,注意目的地址和源地址重合的情况,以及强制类型转换

    void *myMemCopy(void *dest,const void *src,size_t count)
    {
        char *pDest=(char *)(dest);
        const char *pSrc=(const char *)(src);
    
        //目的地址和源地址重叠,从源地址的末尾方向开始拷贝
         if( pDest>pSrc && pDest<pSrc+count )
        {
            pDest = pDest + count-1;
            pSrc = pSrc + count-1;
            while(count--){
                *pDest-- = *pSrc--;
            }
        }
        //目的地址和源地址不重叠,从源地址的开始方向拷贝
        else
        {
            while(count--){
                 *pDest++ = *pSrc++;
            }
        }
    
        return pDest;
    }

    memset函数

    memset()的函数, 它可以一字节一字节地把整个数组设置为一个指定的值。

    memset()函数在mem.h头文件中声明,它把数组的起始地址作为其第一个参数

    void* memset(void* s, int c, size_t n)
    {
    assert(str != NULL);    
    unsigned char* p = (unsigned char*) s;
        while (n > 0) {
        *p++ = (unsigned char) c;
        --n;
        }
        return s;
    }
  • 相关阅读:
    linux(不会考特别难,牢记下面即可)
    ajax
    Javascript 和 Jquery
    开发环境及配置
    网络协议考点
    面向对象考点
    会话控制
    文件操作
    正则表达式
    自定义函数和内部函数
  • 原文地址:https://www.cnblogs.com/NeilZhang/p/6368368.html
Copyright © 2020-2023  润新知