码迷,mamicode.com
首页 > 其他好文 > 详细

memcpy 和 strcpy

时间:2016-04-11 22:13:00      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:


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++)!=\0‘); //[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;
}

memcpy 和 strcpy

标签:

原文地址:http://www.cnblogs.com/dynas/p/5380314.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!