前面我们谈到了strcpy和strncpy这两个函数。这两个函数都没有考虑到内存重叠,假如要考虑内存重叠,我们又该如何实现呢?所谓重叠,就是src未处理的部分已经被dst给覆盖了
memcpy的函数原型如下:void *memcpy(void *dest, const void *src, size_t n);
memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。
函数返回指向dest的指针。
函数实现如下:
void *mymemcpy(void *dst,void *src,size_t count) { char *p1=(char *)dst; char *p2=(char *)src; void *ret=dst; while(count--) { *p1=*p2; p1++; p2++; } return ret; }
原文地址:http://luminous.blog.51cto.com/10797288/1738030