前面我们谈到了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;
}