snprintf_s解释


  int _snprintf_s(
     char *buffer,
     size_t sizeOfBuffer,
     size_t count,
     const char *format [,
     argument] ... 
  );
1. sizeofBuffer,打算用于存储的缓冲区的宽度,注意,它与buffer是否还有很多空间无关,即使buffer还有很多空间,sizeofBuffer指定的大小才是你告诉该函数要使用的空间,换句话说,sizeofBuffer指定了当前有效的缓冲区的大小。

2. count,它存在的目的是,当后面参数得到的内容宽度超出了sizeofBuffer之后,避免缓冲区溢出,程序会自动截取count宽度的内容,并且追加一个结束符,也就是说count最多指定为sizeofBuffer-1,count可以等于sizeofBuffer,前提是后面参数得到的内容宽度没有溢出。将count参数设置为_TRUNCATE,如果内容宽度没有超出sizeofBuffer,则后面内容是多少就存多少,只有当内容宽度超出的时候,就等同于sizeofBuffer-1,也就是说只有溢出的时候_TRUNCATE才起到作用。

3. 即,count才是目标内容的宽度,sizeofBuffer只是缓冲区的宽度,当知道后面参数的真实宽度时,应该是指定在count上。

4. _snprintf_s 总是要追加一个结束符,因此,如果count和sizeofBuffer相等,并且后面内容大于等于了这个宽度,那么结束符就无处安放了,也就是会导致溢出。
————————————————
版权声明:本文为CSDN博主「dyzhen」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dyzhen/article/details/85263682

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值