strcpy和Memcpy。

本文通过一个具体示例展示了在C语言中使用strcpy与memcpy的不同之处。当目标缓冲区大小小于源字符串长度时,使用strcpy可能导致程序崩溃。文章强调在处理没有以空字符结尾的数据时应选择memcpy。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近,代码除了一个问题,就是调用strcpy的时候,程序飞掉了。经过跟踪,发现了一个问题,就是strcpy在这里不能使用。 应该使用memcpy才可以,那么,strcpy和memcpy 的一个最主要区别是什么呢?

看一下下面的例子,估计大家就明白了。

char   temp[10] = {0};

char *tempOrg = "1234567890";

strcpy(temp, tempOrg); //会是一个未定义的现象哟,应为已经越界了!!!

memcpy(temp, tempOrg, strlen(tempOrg));//这样就刚好拷贝完成。

这里提醒大家,不要认为所有的字符串都用strcpy就可以了,大家都知道,所有的字符串是以字符0为结束符的,因此使用strcpy不会有人和问题,但是,要考虑到,有的厂商提供给你的东西并没有考虑这些因素。

例如Asn语言转换为C++结构的诸多工具中,都没有进行这样的考虑,因此,此时,如果你使用strcpy,祸害无穷呀,因此,什么时间使用strcpy,什么时间考虑memcpy,要注意呀。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值