linux下C语言my_memcopy和my_strcpy实现
#include#include#includevoid *memcopy(void *dest,const void *src,int n){char *p1 = (char *)dest;char *p2 = (char *)src;if(NULL == dest || NULL == src || n <= 0){printf("Input param
·
/* 实现内存复制的函数 */
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;
}
更多推荐
已为社区贡献8条内容
所有评论(0)