C/C++开发,sprintf函数末尾添加‘\0‘结束问题
sprintf指的是字符串格式化命令,函数声明为 int sprintf(char *string, char *format [,argument,...]);,主要功能是把格式化的数据写入某个字符串中,即发送格式化输出到 string 所指向的字符串。sprintf 是个变参函数。使用sprintf 对于写入buffer的字符数是没有限制的,这就存在了buffer溢出的可能性。解决这个问题,可以考虑使用 snprintf函数,该函数可对写入字符数做出限制。
函数声明
int sprintf(char *string, char *format [,argument,...]);
参数列表
-
string-- 这是指向一个字符数组的指针,该数组存储了 C 字符串。
-
format-- 这是字符串,包含了要被写入到字符串 str 的文本。它可以包含嵌入的 format 标签,format 标签可被随后的附加参数中指定的值替换,并按需求进行格式化。format 标签属性是%[flags][width][.precision][length]specifier
-
[argument]...:根据不同的 format 字符串,函数可能需要一系列的附加参数,每个参数包含了一个要被插入的值,替换了 format 参数中指定的每个 % 标签。参数的个数应与 % 标签的个数相同。
功能
把格式化的数据写入某个字符串缓冲区。
返回值
如果成功,则返回写入的字符总数,不包括字符串追加在字符串末尾的空字符。如果失败,则返回一个负数。
sprintf 返回以format为格式argument为内容组成的结果被写入string的字节数,结束字符‘\0’不计入内。即,如果“Hello”被写入空间足够大的string后,函数sprintf 返回5。
特别说明
sprintf函数会在字符串末尾添加'\0'结束。
相关文章
- visual C++游戏绘图之透明效果制作原理
- C/C++ 静态链接库(.a) 与 动态链接库(.so)
- C/C++的开发环境安装
- C++中static类成员
- c++ 类的定义和使用
- C++ 内联函数
- C++11时代的标准库快餐教程(1) - 不同类型值组成的简单列表
- C/C++基础讲解(二十七)之数值计算与趣味数学篇(数字大会战)
- 组合两个表(C++)
- C++Qt 水平布局(QHBoxLayout)
- C++Qt开发——QSS样式表
- C++库研究笔记--用__attribute__((deprecated)) 管理过时代码
- eclipse 灵活使用makefile来编译C/C++
- C/C++、Qt开发,跨平台CMake判断当前平台是Linux还是Windows,操作系统判断
- C++成员变量初始化列表中初始化顺序(七十)
- windows系统中eclipse C c++开发环境的搭建
- Windows 7中使用Eclipse 使用CDT and WinGW 开发C/C++(转载)
- HLS开发学习-07- Vivado HLS 中的 C++ 基本运算
- 第十三届蓝桥杯B组C++(试题B:顺子日期)
- C/C++调用java---JNI常用函数
- 让树莓派支持C++17开发