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

  以字符拷贝函数为例:

  分为TCHAR版 MCBS 和UNICODE版

TCHARMCBSUNICODE VC推荐安全版
_tcscpy    strcpy  wcscpy*_s 
_tcsncpystrncpywcsncpy*_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可以是动态分配内存的指针,

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

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

转载于:https://www.cnblogs.com/gameNote/p/3562170.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值