函数功能:

将数据格式化输出到字符串

函数原型:

int sprintf( char *buffer, const char *format [,argument] ... )

注意这里的buffer指针 指向的是格式化字符后写入的首地址。

意思就是:格式化数据,并写入字符串,这些方法已经不用,因为有更安全的方法可用。

参考sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l 这些函数。

sprintf_s函数原型

int sprintf_s( char *buffer, size_t sizeOfBuffer, const char *format [, argument] ... );

从原型上看:sprintf 和 sprintf_s 的差别就是sprintf_s多了一个参数sizeofbuffer。

两个的具体差别,还是看MSDN上的说明:
一个差别是:sprintf_s 会检查格式化字符的合法性,而sprintf只会检查其是否是空指针;
另一个差别是:sprintf_s 设置了输出buffer的大小。

sprintf_s()是sprintf()的安全版本,通过指定缓冲区长度来避免sprintf()存在的溢出风险。

程序示例:

#include<iostream>
using namespace std;int main(){char s[1024];   //需要预先分配缓冲区sprintf(s, "%d %d %s", 123,2,"hello");cout << s << endl;system("pause");return 0;
}

输出

123 2 hello

常见用法:


//把整数123 打印成一个字符串保存在s 中。
sprintf(s, "%d", 123); //产生"123"
//可以指定宽度,不足的左边补空格:
sprintf(s, "%8d%8d", 123, 4567); //产生:" 123 4567"
//当然也可以左对齐:
sprintf(s, "%-8d%8d", 123, 4567); //产生:"123 4567"
//也可以按照16 进制打印:
sprintf(s, "%8x", 4567); //小写16 进制,宽度占8 个位置,右对齐
sprintf(s, "%-8X", 4568); //大写16 进制,宽度占8 个位置,左对齐
char filename[1024];//需要预先分配缓冲区
char path1[128] = "D:\\Program\\Tesseract-OCR\\tesseract.exe";
char path2[128] = "D:\\Program\\Tesseract-OCR\\";
char path3[128] = "D:\\Program\\Tesseract-OCR\\txt";
char path4[128] = "-l chi_sim";
sprintf_s(filename,"%s %s %s %s",path1,filepath,path3,path4);
system(filename);

参考 https://blog.csdn.net/woshi_hujunjun/article/details/7296639
https://blog.csdn.net/tigernana/article/details/6916491
https://www.cnblogs.com/jeekun/archive/2013/01/15/2862051.html

sprinf sprintf_s 的用法相关推荐

  1. sprintf_s的用法探究

    这个函数定义如下 int sprintf_s(char *buffer,size_t sizeOfBuffer,const char *format [,argument] ... ); 参数说明是这 ...

  2. sprintf 用法(sprintf_s)

    函数原型: int sprintf( char *buffer, const char *format [,argument] ... ) 注意这里的buffer指针 指向的是格式化字符后写入的首地址 ...

  3. sprintf_s() 、sprintf()和printf()区别和用法

    int sprintf_s(char *buffer,size_t sizeOfBuffer,const char *format [,argument] -); eg: char buff[256] ...

  4. sprintf, snprintf, _snprintf, sprintf_s 等的区别

    先放结论 1.在支持snpritf的编译器 ,只使用int snprintf( char *buffer, size_t count, const char *format [, argument] ...

  5. C语言学习——sprintf函数详细解释及其用法

    函数功能: 把格式化的数据写入某个字符串 头文件: stdio.h 函数原型: int sprintf( char *buffer, const char *format, [ argument] - ...

  6. sprintf_s的使用

    int sprintf_s(char *restrict buffer, rsize_t bufsz,               const char *restrict format, ...); ...

  7. sprintf用法详解

    printf可能是许多程序员在开始学习C语言时接触到的第二个函数(我猜第一个是main),说起来,自然是老朋友了,可是,你对这个老朋友了解多吗?你对它的那个孪生兄弟sprintf了解多吗?在将各种类型 ...

  8. sprintf函数的用法_我在C++项目中对于宏的一些用法

    从上一次写文章到现在已经快2个月了,为啥没更新,因为太忙了! 每天都在为了实现一些麻烦的功能而心急火燎,总是没办法静下心来写文章.所以一直拖延. 对于宏的一些个人用法其实早就想写出来了,碍于时间关系一 ...

  9. 详解sprintf()sprintf_s()

    sprintf 函数功能:把格式化的数据写入某个字符串 头文件:stdio.h  函数原型:int sprintf( char *buffer, const char *format [, argum ...

最新文章

  1. Android 人民币符号在布局中实现的效果不一样的处理方法
  2. String和C#中的string有什么区别?
  3. getElementById取得文本框中的值
  4. 请你说明一下TreeMap的底层实现?
  5. showModalDialog数据缓存问题
  6. 从码奴到码神之路--初级到中级再到高级程序员的进化之路
  7. 【Python 标准库学习】安全哈希与摘要算法库 — hashlib
  8. gitlab ci mysql_php-Gitlab CI:在阶段之间保留MySQL数据
  9. 学生选课系统简单说明
  10. 个性签名html,简单个性签名大全2021最新版-简简单单的个性签名--个性简单签名设计-腾牛个性网...
  11. 个人微信淘宝客返利机器人搭建教程
  12. Effective Java目录
  13. 水平居中和transform: translateY(-50%) 实现元素垂直居中
  14. vc 调用matlab figure 画图
  15. Part 4R 不定积分和定积分
  16. 亮紫色晶体meso四(4-氨基苯基)卟啉TAPP/TAPPPt/TAPPCo/TAPPCd/TAPPZn/TAPPPd/TAPPCu/TAPPNi/TAPPFe/TAPPMn金属配合物-齐岳供应
  17. python求和函数1-n_python 用for循环实现1~n求和的实例
  18. HUANAN-X99-QD4 E5 2698V3 笔记本电脑 Hackintosh 黑苹果efi引导文件
  19. 微信小程序(微信应用号)开发ide安装解决方法
  20. 三阶魔方自动求解及动态可视化matlab代码

热门文章

  1. 智能监控中隐私与安全之间的错误选择
  2. oracle19c查看pdb表空间,19c pdb如何保存启动状态
  3. 软考-信息系统项目管理师-项目沟通管理和干系人管理
  4. defy 超频/降频CPU设置
  5. 17篇论文,详解图的机器学习趋势 | NeurIPS 2019
  6. windows下的LoadLibrary
  7. 计算机桌面上的公文包怎么加密,win7系统公文包如何用?win7公文包的使用教程...
  8. tomcat优化之server.xml
  9. SQL大厂春招真题,独家详细解析
  10. 支付宝电脑网站支付(新版)