zoukankan      html  css  js  c++  java
  • memcpy 和 strcpy


    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;
     }
    

      

    strcpy实现,没有考虑地址重叠

    char * strcpy(char *dst,const char *src)   //[1]
    {
        assert(dst != NULL && src != NULL);    //[2]

        char *ret = dst;  //[3]

        while ((*dst++=*src++)!=''); //[4]

        return ret;
    }

    考虑地址重叠

    char * strcpy(char *dst,const char *src)   //[1]
    {
        assert(dst != NULL && src != NULL);    //[2]

        char *ret = dst;  

        mymemcpy(dest,src,strlen(src)+1);
          return ret;
    }

  • 相关阅读:
    iOS UILable 自定义高度 用masony适配
    iOS上架所需图片大小明细
    GCD倒计时
    iOS 小知识汇总
    七、Swift 枚举 Enumerations
    C语言深度剖析笔记
    六、闭包 Closures
    经济学常识
    Mac小技巧
    五、函数 Functions
  • 原文地址:https://www.cnblogs.com/dynas/p/5380314.html
Copyright © 2011-2022 走看看