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相等,并且后面内容大于等于了这个宽度,那么结束符就无处安放了,也就是会导致溢出。

_snprintf_s相关推荐

  1. sprintf_s与_snprintf与_snprintf_s

    MSDN页面分别如下: spirntf_s: http://msdn.microsoft.com/zh-cn/library/ce3zzk1k%28VS.80%29.aspx _snprintf: h ...

  2. sprintf_s、_snprintf与_snprintf_s

    一.函数原型 1.sprintf_s int sprintf_s( char *buffer, size_t sizeOfBuffer, const char *format[,argument].. ...

  3. _snprintf_s与_snprintf

    VS2010测试百度百科给出的例子: char a[16]; size_t i; _snprintf_s 会自动自动截断,保留最大需要拷贝的字符串长度cout(即第二个参数) _snprintf 不会 ...

  4. linux下snprintf用法,关于snprintf,_snprintf,_snprintf_s操作

    一.snprintf与snprintf_s的区别 众所周知,sprintf不能检查目标字符串的长度,可能造成众多安全问题,所以都会推荐使用snprintf. snprintf函数在C++11之前 并不 ...

  5. C++ 文件大小格式化

    1 #include <iostream> 2 #include <windows.h> 3 using namespace std; 4 1 /*文件大小格式化 2 *par ...

  6. C++单元测试学习总结9

    C++单元测试一:并非看上去那么简单--几个很实际的问题 理想与现实 为Java和C#做单元测试,基本上都有比较统一的工具.模式可用,IDE的支持也非常到位:可是到 了C++这里,一切就变的那样的&q ...

  7. c++ winpcap开发(2)

    获取有关可用适配器的基本信息(即设备名称和描述).实际上WinPcap还提供其他高级信息.特别地,pcap_findalldevs_ex()返回的每个pcap_if结构还包含pcap_addr结构的列 ...

  8. ONVIF、RTSP/RTP、FFMPEG的开发实录

    ONVIF.RTSP/RTP.FFMPEG的开发实录 前言 本文从零基础一步步实现ONVIF协议.RTSP/RTP协议获取IPC实时视频流.FFMPEG解码.开发环境为WIN7 32位 + VS201 ...

  9. c++ websocket 客户端

    本次创建一个c++ 的websocket客户端,不依赖于其他库 头文件 #ifndef _WS_CLIENT_H #define _WS_CLIENT_H#ifdef _WIN32 #define _ ...

最新文章

  1. java实训周报_实验室周报
  2. vb初学者编程代码大全_学习VB编程第14天,一个简单的排序代码把我难住了
  3. OpenCV推断onnx格式目标检测模型(SSD)(附完整代码)
  4. monk js_使用Monk AI进行手语分类
  5. UI标签库专题十三:JEECG智能开发平台 ckfinder(ckfinder插件标签)
  6. ASP.NET 本地化 (localization)
  7. erl_0015 《硝烟中的erlang》 读书笔记002 “为过载做计划”
  8. python learning1.py
  9. C#通用类库--数字转为人民币汉字大写表示
  10. linux切换tab,linux-mint – ALT-TAB切换器中的图标从哪里加...
  11. Action以外的类中来获得Spring所管理的Service对象
  12. 喜马拉雅音频解析插件
  13. 基于matlab的暴雨强度公式参数推求,基于MATLAB的暴雨强度公式参数推求
  14. ue4 设置运行分辨率
  15. 对JSP内置对象的部分总结
  16. Mac手动关闭暗黑模式
  17. Ansible事实变量常见fact
  18. STM32F103C8T6基础开发教程(HAL库)—点亮第一颗LED灯
  19. 记录一个vue监控屏幕宽度的问题
  20. 数据库简介与 Mysql 服务基础

热门文章

  1. MDXMondrian介绍
  2. Android:Handler中的Idle Handler
  3. 西电通信技术基础实验
  4. node的卸载和安装
  5. IDE工具(27) idea点击箭头快速切换到相关联的类位置 (Free MyBatis插件)
  6. Navicat Premium 连接oracle 提示ORA-01017:用户名/口令无效;登陆被拒绝
  7. 点点滴滴自学PS(一)批量去水印
  8. vue props命名为啥使用kebab-case (短横线隔开式) 来命名
  9. 【Nginx】配置中 resolver 指令的使用
  10. python-今日头条