两个函数都是将源地址开始的若干个字节复制到目的地址,区别在于memcpy()无法处理区间重叠;
这里处理区间的处理方式位,当目的地址大于源地址就反向拷贝,反之就正向拷贝;
void* mymemcpy(void* src,void* dst,int n)
{
char* psrc=(char*)src;
char* pdst=(char*)dst;
if(psrc==0||pdst==0)return (void*)0;
if(pdst>psrc)
{
pdst+=n-1;
psrc+=n-1;
while(n--)
*pdst--=*psrc--;
}
else
{
while(n--)
*pdst++=*psrc++;
}
return dst;
}
int main() {
char s1[]="abcde";
char s2[]="world";
auto p=mymemcpy(s1,s2,strlen(s1));
printf("%s\n",p);
}


被折叠的 条评论
为什么被折叠?



