首页
学习
活动
专区
圈层
工具
发布

C语言中的复制函数(strcpy和memcpy)第三章

3、strcpy和memcpy的区别。

1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。

2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。

3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy

2017/3/19更新

memcpy的实现

要注意,内存重叠的情况,比如

char test[]=“abcdefghi”;

memcpy(test+3,test,6);

如果从头向尾复制,结果就是abcabcabc,正确结果应该是abcabcdef。所以像这种情况应该从尾向头复制

void memcpydiy(char *dest,const char *scr,int len)

{

if (dest == NULL || scr == NULL)

return;

char *pdest = dest;

char *pscr = (char *)scr;

if ((scr < dest) && (dest < scr + len)) //重叠,从尾部开始复制

{

pdest = pdest + len - 1;

pscr = pscr + len - 1;

while (len–)

{

*pdest-- = *pscr–;

}

}

else

{

while (len–)

{

*pdest++ = *pscr++;

}

}

}

---------------------

完结 欢迎大家发表各自的观点 谢谢

下一篇
举报
领券