zoukankan      html  css  js  c++  java
  • 笔记:C/C++字符函数的使用

      以字符拷贝函数为例:

      分为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可以是动态分配内存的指针,

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

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

  • 相关阅读:
    iType.js仿输入文字效果
    css上下左右居中
    js的几种继承方式
    jquery ajax跨越
    js构造函数+原型
    less基础引用
    vw单位相关
    移动端适配(rem单位定义方法)
    第二周 day2 python学习笔记
    第一周 day1 Python学习笔记
  • 原文地址:https://www.cnblogs.com/gameNote/p/3562170.html
Copyright © 2011-2022 走看看