博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sprintf 心得
阅读量:5282 次
发布时间:2019-06-14

本文共 910 字,大约阅读时间需要 3 分钟。

【string print format】sprintf指的是字符串格式化命令。

【主要功能】是把格式化的数据写入某个字符串中

sprintf是个变参函数。

使用sprintf对于写入buffer的字符数是没有限制的,这就存在buffer溢出的可能性。【所以buffer数组一般要开的大一些】

【头文件】:stdio.h

【返回值】:字符串长度

【原型】:int sprintf(char *buffer, const char *format,[]...);

【参数列表】:

buffer:char型指针,指向将要写入的字符串的缓冲区

format:格式化字符串

[]...:可选参数,可以是任何类型的数据

【常见问题】:

sprintf 是个 函数,使用时经常出问题,而且只要出问题通常就是能导致程序崩溃的内存访问错误,但好在由sprintf 误用导致的问题虽然严重,却很容易找出,无非就是那么几种情况,通常用眼睛再把出错的代码多看几眼就看出来了。
第一个参数的长度太短了,没的说,给个大点的地方吧。当然也可能是后面的参数的问题,建议变参对应一定要细心,而打印 串时,尽量使用”%.ns”的形式指定最大字符数。
忘记了第一个参数
低级得不能再低级问题,用printf 用得太惯了。
变参对应出问题
通常是忘记了提供对应某个格式符的 ,导致以后的参数统统错位,检查检查吧。尤其是对应”*”的那些参数,都提供了吗?不要把一个整数对应一个”%s”, 会觉得你欺她太甚了。
 
 
#include 
using namespace std;int main(){ char buffer[50]; int n,a=5,b=3; n=sprintf(buffer,"%d plus %d is %d",a,b,a+b); printf("[%s] is a string %d chars long\n",buffer,n); return 0;}
example

 

转载于:https://www.cnblogs.com/Roni-i/p/8277283.html

你可能感兴趣的文章
NOIP2016提高A组五校联考2总结
查看>>
iOS 项目的编译速度提高
查看>>
table中checkbox选择多行
查看>>
Magento开发文档(三):Magento控制器
查看>>
性能调优攻略
查看>>
ie6解决png图片透明问题
查看>>
瞬间的永恒
查看>>
2019-8-5 考试总结
查看>>
JS中实现字符串和数组的相互转化
查看>>
web service和ejb的区别
查看>>
Windows Azure Cloud Service (29) 在Windows Azure发送邮件(下)
查看>>
CS61A Efficiency 笔记
查看>>
微信上传素材返回 '{"errcode":41005,"errmsg":"media data missing"}',php5.6返回
查看>>
div或者p标签单行和多行超出显示省略号
查看>>
Elasticsearch 滚动重启 必读
查看>>
Hadoop基本概念
查看>>
java.util.zip压缩打包文件总结一:压缩文件及文件下面的文件夹
查看>>
浅说 apache setenvif_module模块
查看>>
MySQL--数据插入
查看>>
重新学习python系列(二)? WTF?
查看>>