Chinaunix首页 | 论坛 | 博客
  • 博客访问: 978604
  • 博文数量: 150
  • 博客积分: 3017
  • 博客等级: 少校
  • 技术积分: 3829
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-19 14:40
个人简介

Now in Baidu WISE team

文章分类

全部博文(150)

文章存档

2014年(8)

2013年(31)

2012年(111)

分类: C/C++

2012-12-28 11:20:37

自己实现一个memcpy的函数。
 
需要考虑的地方在src和dest重叠的情况。
gcc编译有warning,运行通过。
 

点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. void* mymemcpy(const void* src, void* dest, int size){
  4.     if(src == NULL || dest==NULL) return NULL;
  5.     
  6.     char* ps = (char*)src;
  7.     char* pd = (char*)dest;
  8.     if(ps+size>=dest || dest+size>=ps){
  9.         //if no overlay
  10.         while(size-->0)
  11.             *pd++ = *ps++;
  12.         return dest;
  13.     }
  14.     while(ps!=dest && pd!=src){
  15.         *pd++ = *ps++;
  16.     }
  17.     return dest;

  18. }

  19. int main(void){
  20.     char* src1 = "test test";
  21.     char dest1[20];
  22.     mymemcpy(src1, dest1, 10);    
  23.     printf("dest1 = %s\n", dest1);
  24.     char src2[] = "abcdefg";
  25.         char *dest2;
  26.     dest2 = src2 + 3;
  27.     mymemcpy(src2, dest2, 8);
  28.     printf("dest2 = %s\n", dest2);

  29. }

阅读(1270) | 评论(1) | 转发(2) |
给主人留下些什么吧!~~

duanlin2012-12-28 17:34:17

期待你的 malloc()