strcpy与strncpy
转载char aa[]="123456789123456789123456789";
char bb[4]={0};
1、strcpy(bb,aa); bb的空间,不能存下aa的内容,导致踩到aa的内存。如何解决这个问题?
2、使用strncpy,如下:
strncpy(bb,aa,sizeof(bb)); 存在问题,bb的空间全部存储有效数据,没有预留\0的位置,strlen(bb)的长度是不确定的。如何解决这个问题?
3、使用strncpy(bb,aa,sizeof(bb)-1);
4、注意:strncpy(bb,aa,n); 表面意思是拷贝n个字节。实际上,不是这样。表示最多拷贝n个字节。如下:
char aa[]="123456789123456789123456789";
char bb[4]={0};
strncpy(bb,aa,3); //拷贝3个字节,bb为 1,2,3,\0
aa[1] = 0;
strncpy(bb,aa,3); 按道理,应该拷贝3个字节,bb为1,\0,3,\0
实际上,不是这样,而只是拷贝了1,\0, bb为1,\0,\0,\0
也就是说,strncpy表示最多拷贝n个字节,来源的\0,会导致提前结束拷贝。
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:Vim的使用 区域选择
下一篇:大端和小端
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Python函数与模块的精髓与高级特性
本文将介绍 Python 中函数和模块的基本使用方法,并提供一些代码实例。
Python 函数式编程 高级特性 -
strcpy()、strncpy()区别
,但执行时因系统不同会出现不同的结果:Mac系统提示“Ab...
字符串 正常运行 mac系统 -
strcpy/strncpy/strcpy_s比较
而准备的安全度很高的函数。
字节数 字符串 错误代码