结论:
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出错!!!!