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

  • 相关阅读:
    Java学习十八
    Java学习十七
    Java学习十六
    毕设进度01
    Java学习十五
    Java学习十四
    Java学习十三
    爬虫基础三
    随笔
    火车车厢重排问题--队列模拟
  • 原文地址:https://www.cnblogs.com/dynas/p/5380314.html
Copyright © 2011-2022 走看看