/* 实现内存复制的函数 */
void* my_memcpy(void* dest, const void* src, int len)
{
if(dest == NULL || src == NULL || len < 0)
{
return NULL;
}
void *ret = dest;
char* p_dest = (char*)dest;
char* p_src = (char*)src;
/* 判断内存地址是否重合,如果内存重合就从高位开始拷贝 */
if(p_dest > p_src && p_src+len > p_dest)
{
p_dest = p_dest + len - 1;
p_src = p_src + len - 1;
while(len--)
{
*p_dest-- = *p_src--;
}
}
/* 如果没有重合就从低位开始拷贝 */
else
{
while(len--)
{
*p_dest++ = *p_src++;
}
}
return ret;
}
char *my_strcpy(char *strDest, const char *strSrc)
{
char *ptr;
if(strDest == NULL || strSrc == NULL)
exit(-1);
ptr = strDest;
while(*strSrc != '\0')
{
*strDest++ = *strSrc++;
}
*strDest = '\0';
return ptr;
}
linux下C语言my_memcopy和my_strcpy实现
最新推荐文章于 2022-08-12 00:53:26 发布