前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言中的复制函数(strcpy和memcpy)第三章

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

原创
作者头像
互联网CEO
修改2018-11-28 10:17:31
1.2K0
修改2018-11-28 10:17:31
举报

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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档