首页 > 编程语言 > 详细

笔记:C/C++字符函数的使用

时间:2014-02-24 11:43:31      阅读:378      评论:0      收藏:0      [点我收藏+]

  以字符拷贝函数为例:

  分为TCHAR版 MCBS 和UNICODE版

TCHAR MCBS UNICODE  VC推荐安全版
_tcscpy     strcpy   wcscpy *_s 
_tcsncpy strncpy wcsncpy *_s 

  

    

 

  

  从src拷贝字符到des,于是就产生了2个问题:

  它们2个串的长度和相互匹配问题。

  原来的strcpy是复制src中的字符到des,包括空值结束符,但是怕des太小,容不下,容易崩溃,所以有了后来的strncpy,指定了拷贝的长度,但终归目的是要求des长度要合适。即便如此,事情往往并没有像预料那般前进,不可避免会有des长度不合适,导致程序运行时崩溃。所以有了_s版,有错的话,会弾出错误信息来纠正,而不是直接崩溃,这样就好多了。而且在des长度足够时,使用strncpy_s比strncpy要好,_s版会自动把拷贝后des剩余部分清零,strncpy不会这样做,你得手动清零,不然有可能des值是str+乱码。不过_s版不是标准库里的函数,各有取舍。

  这里主要记录下VC推荐安全版的区别,因为VC的编译器推荐使用它们的_s版。

  有不多参数的,也有加参数的。

  前者不加参数时(&des)[size]类型,只能用于静态分配内存的指针,

  后者多了一个参数在*des后面,des可以是动态分配内存的指针,

  目的是保证缓冲区的大小。

  而实际操作中会碰到各种情况。只需要明白它们之间的区别,合理使用。

笔记:C/C++字符函数的使用

原文:http://www.cnblogs.com/gameNote/p/3562170.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!