C++ 中的sprintf和snprintf 函数的区别
来源:互联网 发布:知乎keso 编辑:程序博客网 时间:2024/05/18 02:50
在编程过程中经常有字符串转数字和数字转字符串,相应的函数大家最经常见到可能是atoi和itoa。但是itoa不是标准库里面的函数,所以接下来介绍下面两个函数sprintf和snprintf函数,并将它们比较一番。最近写的博客目前就是一些自己在实现基于 Nginx磁盘缓存的一些知识总结
sprintf()函数
用法
int sprintf(char *string,char *format,arg_list);
说明
数sprintf()的用法和printf()函数一样,只是sprintf()函数给出第一个参数string(一般为字符数组),然后再调用 outtextxy()函数将串里的字符显示在屏幕上。arg_list为参数表,可有不定个数。通常在绘图方式下输出数字时可调用sprintf()函 数将所要输出的格式送到第一个参数,然后显示输出。
snprintf函数
snprintf函数是sprintf的限制字符数量的一个表达。
用法
int snprintf(char *str, size_t size, const char *format, ...)
snprintf函数的返回值
sprintf函数返回的是实际输出到字符串缓冲中的字符个数,包括null结束符。而snprintf函数返回的是应该输出到字符串缓冲的字符个数,所以snprintf的返回值可能大于给定的可用缓冲大小以及最终得到的字符串长度
总结
sprintf可能导致缓冲区溢出问题而不被推荐使用,所以在项目中我一直优先选择使用snprintf函数,虽然会稍微麻烦那么一点点。这里就是sprintf和snprintf最主要的区别:snprintf通过提供缓冲区的可用大小传入参数来保证缓冲区的不溢出,如果超出缓冲区大小则进行截断。但是对于snprintf函数,还有一些细微的差别需要注意。
0 0
- C++ 中的sprintf和snprintf 函数的区别
- sprintf和snprintf的区别
- snprintf()函数与sprintf函数的区别
- linux c之snprintf()和sprintf()区别
- sprintf和snprintf的定义及区别
- 为什么snprintf比sprintf更安全?(另外,请注意, Windows和Linux中的snprintf函数有区别)
- 为什么snprintf比sprintf更安全?(另外,请注意, Windows和Linux中的snprintf函数有区别)
- snprintf函数和sprintf函数
- snprintf和sprintf区别分析
- snprintf和sprintf区别分析
- sprintf与snprintf的区别
- snprintf与sprintf的区别
- sscanf / sprintf 函数和 snprintf 函数的用法
- 三个打印函数printf()/sprintf()/snprintf()区别
- C中的 snprintf()函数
- sprintf和snprintf函数用法简介
- printf、fprintf、sprintf和snprintf函数
- strcpy/strncpy/sprintf/_snprintf/snprintf的区别
- 《Java源码分析》:HashMap
- POJ 2480 Longge's problem
- iOS 7.0 使用定位requestAlwaysAuthorization导致crash的问题
- strcpy函数解析
- ctags及taglist的安装和使用方法
- C++ 中的sprintf和snprintf 函数的区别
- MBeanServer中获取ObjectName的某个属性值的参考代码
- 【刷题之路】字符串排序
- bzoj 1055 玩具取名
- lua的require
- Spring Session
- @Override和@SuppressWarnings
- 17.1.1.3 Creating a User for Replication
- menu(菜单)