strncpy一定要慎用!!!!!!

结论:

strncpy(A,B,sizeof(A));这样写是不安全的。推荐snprintf!
当B的内容长度超过A时,遇到\0停止,并且不会自动追加\0。
snprintf会自动截断并追加\0。
如果使用strncpy一定要手动追加\0


在还未成为大佬之前,还是得时常回顾基础知识,一些细枝末节容易遗忘,还偏偏这些地方容易能导致奇怪的bug。


个人认为解决思路

这样是不是就可以避免,追加\0的问题了,如有问题还请大佬不吝赐教。

char src[]= "123456789";
memset(dest, '\0', sizeof(dest));
strncpy(dest, src, sizeof(dest)-1);

代码测试:

今天在温习基础知识的时候,发现一个strncpy不太注意的点。但是在工作中还经常中strncpy,现在想一想一身冷汗。
使用strncpy和snprintf比对
在这里插入图片描述

测试结果

打印strncpy出错!!!!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值