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++;
}
}
}
---------------------
完结 欢迎大家发表各自的观点 谢谢
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。