打印

谁写个memcpy函数....

[复制链接]
4182|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xlsbz|  楼主 | 2011-4-29 17:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
原野之狼| | 2011-4-29 17:45 | 只看该作者
笔试题?

使用特权

评论回复
板凳
hgjinwei| | 2011-4-29 18:12 | 只看该作者
最简单的:

void *memcpy(void *to,const void *from, unsigned int size)
{
         unsigned char *mov = from;
         unsigned char *mov_to = to;

         while(size--){
                  *mov_to++ = *mov++;
         }
         
          return(from);
}
复杂点的就算了,要考虑数据对齐。

使用特权

评论回复
地板
xlsbz|  楼主 | 2011-4-29 19:36 | 只看该作者
const加了???

官方没加啊!!!

使用特权

评论回复
5
xlsbz|  楼主 | 2011-4-29 19:38 | 只看该作者
还弄个return from  牛啊  咋回事 讲讲

使用特权

评论回复
6
古道热肠| | 2011-4-29 21:36 | 只看该作者
3楼的代码能用。

使用特权

评论回复
7
古道热肠| | 2011-4-29 21:37 | 只看该作者
<string.h>中的函数还是比较好实现的,printf函数就有些难写了。

使用特权

评论回复
8
xlsbz|  楼主 | 2011-4-30 09:28 | 只看该作者
本帖最后由 xlsbz 于 2011-4-30 09:31 编辑
void*   memcpy(void   *   pvTo,const   void   *   pvFrom   ,int   size)  
   
  {  
        assert(pvTo!=NULL)&&(pvFrom!=NULL);  
        assert((pvTo>=pvFrom+size)||(pvFrom>=pvTo+size));  
      ///....用   typedef   设置你要用到的类型  
      byte*   pbTo=(byte*)pvTo;  
      byte*   pbFrom=(byte*)pvFrom;  
   
      while(size-->0)  
   
  {  
          *pbTo++=*pbFrom++   ;  
  }  
   
  return   pvTo;  
   
  }Top



这句话写得好!!!!!
assert((pvTo>=pvFrom+size)||(pvFrom>=pvTo+size));

使用特权

评论回复
9
xlsbz|  楼主 | 2011-4-30 09:42 | 只看该作者
void memcpy(void *pvto, void *pvfrom, size_t size)
{
void *pbto = (byte *)pvto;
void *pbfrom = (byte *)pvfrom;

#ifdef debug
if(pvto == null || pvfrom == null)
{
fprintf(stderr, "bad args in memcpy!\n");
abort();
}
#endif

while(size-- > 0)
*pbto++ = *pbfrom++;
return(pvto);
}


//前面漏了个* 好像

使用特权

评论回复
10
刘前辈| | 2011-4-30 10:27 | 只看该作者
本帖最后由 刘前辈 于 2011-4-30 10:38 编辑

太麻烦了。其实不就是2个数组arr_X[size]之间的复制么。

C语言
arr_2[size]=arr_1[size];    //  需想办法改进

完成同样的功能。当然数组是不能拷贝的,用结构封装起来即可。结构名是标量,同类型可以互相复制。

struct_2=struct_1;     // 正确

typedef  struct  {
arr[size];
}struct_x


struct_x     struct_1={ arr_1[size]; }    // 封装
struct_x     struct_2={ arr_2[size]; }  










、、

使用特权

评论回复
11
123jj| | 2011-5-7 05:27 | 只看该作者
呵呵!

LS都是高手!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

190

主题

1614

帖子

4

粉丝