码迷,mamicode.com
首页 > 其他好文 > 详细

strcpy与strncpy

时间:2015-04-04 10:34:20      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:

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,会导致提前结束拷贝。

strcpy与strncpy

标签:

原文地址:http://www.cnblogs.com/nzbbody/p/4391644.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!