Chinaunix首页 | 论坛 | 博客
  • 博客访问: 333578
  • 博文数量: 201
  • 博客积分: 305
  • 博客等级: 二等列兵
  • 技术积分: 500
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-30 16:58
文章分类

全部博文(201)

文章存档

2015年(5)

2014年(12)

2013年(173)

2012年(11)

我的朋友

分类:

2013-01-09 12:11:03

原文地址:自行实现memcpy 作者:runningdark

自己实现一个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. }

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