前面我们谈到了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;
}
转载于:https://blog.51cto.com/luminous/1738030