函数功能:

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

函数原型:

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 [, argu ...

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

    转载:https://blog.csdn.net/qq_35608277/article/details/80878802 int sprintf_s(char *buffer,size_t size ...

  3. 转:Visual C++ sprintf()函数用法

    将字串格式化命令.sprintf 是个变参函数,使用时经常出问题,而且只要出问题通常就是能导致程序崩溃的内存访 问错误,但好在由sprintf 误用导致的问题虽然严重,却很容易找出,无非就是那么几种情 ...

  4. C++小知识之sprintf用法

    sprintf   字串格式化命令,主要功能是把格式化的数据写入某个字符串中.sprintf 是个变参函数,使用时经常出问题,而且只要出问题通常就是能导致程序崩溃的内存访问错误,但好在由sprintf ...

  5. sprintf()函数的用法

    Visual C++ sprintf()函数用法 转:http://blog.csdn.net/masikkk/article/details/5634886 在将各种类型的数据构造成字符串时,spr ...

  6. sprintf_s的使用

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

  7. sprintf的用法

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

  8. sprintf,snprintf的用法(可以作为linux中itoa函数的补充)【转】

    转自:http://blog.csdn.net/educast/article/details/25068445 函数功能:把格式化的数据写入某个字符串 头文件:stdio.h 函数原型:int sp ...

  9. 几个常用I/O函数用法(printf,fprintf等)

    一 格式化输出 1.printf 定义:int printf(const char *format,[argument]); 功能:产生格式化输出的函数(定义在 stdio.h 中) 参数说明:for ...

随机推荐

  1. EasyUi通过POI 实现导出xls表格功能

    Spring +EasyUi+Spring Jpa(持久层) EasyUi通过POI 实现导出xls表格功能 EasyUi界面: 点击导出按钮实现数据导入到xls表格中 第一步:修改按钮事件: @Co ...

  2. 不懂RPC实现原理怎能实现架构梦

    RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.RPC协议假定某些传输协议的存在 ...

  3. 怎样从外网访问内网Jetty?

    本地安装了一个Jetty,只能在局域网内访问,怎样从外网也能访问到本地的Jetty呢?本文将介绍具体的实现步骤. 准备工作 安装并启动Jetty 默认安装的Jetty端口是8080. 实现步骤 下载并 ...

  4. 使用准现网的数据,使用本地的样式脚本,本地调试准现网页面(PC适用)

    原理: 本地逻辑,重新渲染 步骤: 1.安装插件:Tampermonkey 度盘:https://pan.baidu.com/s/1bpBVVT9 2.设置: 点击插件-->仪表盘 添加脚本 将 ...

  5. 如何获取STM32 MCU的唯一ID及应用(转)

    源: 如何获取STM32 MCU的唯一ID

  6. Torch或Numpy

    1.什么是NumpyNumpy系统是Python的一种开源的数值计算扩展,用python实现的科学计算包.这种工具可用来存储和处理大型矩阵,包括强大的N维数组对象Array,比较成熟的函数库等.num ...

  7. django rest framework跨表取值

  8. Spring Boot(六):如何使用mybatis

    Spring Boot(六):如何使用mybatis orm框架的本质是简化编程中操作数据库的编码,发展到现在基本上就剩两家了,一个是宣称可以不用写一句SQL的hibernate,一个是可以灵活调试动 ...

  9. python3 独立环境 virtualenv & conda

    python3 独立环境 virtualenv & conda virtualenv 创建独立python环境 virtualenv env_name -p /usr/bin/python3 ...

  10. linux判断日志文件大小进行清理

    脚本写了一个死循环,根据nohup产生的日志多大, 这里表示日志超过500M之后清理, 具体数字可自定义 睡眠数可自定义 #!/usr/bin/bash while true do s=`du -k ...