sprinf sprintf_s 的用法

函数功能:

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

函数原型:

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

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

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

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

sprintf_s函数原型

  1. 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()存在的溢出风险。

程序示例:

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

输出

  1. 123 2 hello

常见用法:

  1.  
  2. //把整数123 打印成一个字符串保存在s 中。
  3. sprintf(s, "%d", 123); //产生"123"
  4. //可以指定宽度,不足的左边补空格:
  5. sprintf(s, "%8d%8d", 123, 4567); //产生:" 123 4567"
  6. //当然也可以左对齐:
  7. sprintf(s, "%-8d%8d", 123, 4567); //产生:"123 4567"
  8. //也可以按照16 进制打印:
  9. sprintf(s, "%8x", 4567); //小写16 进制,宽度占8 个位置,右对齐
  10. sprintf(s, "%-8X", 4568); //大写16 进制,宽度占8 个位置,左对齐
  11. char filename[1024];//需要预先分配缓冲区
  12. char path1[128] = "D:\\Program\\Tesseract-OCR\\tesseract.exe";
  13. char path2[128] = "D:\\Program\\Tesseract-OCR\\";
  14. char path3[128] = "D:\\Program\\Tesseract-OCR\\txt";
  15. char path4[128] = "-l chi_sim";
  16. sprintf_s(filename,"%s %s %s %s",path1,filepath,path3,path4);
  17. system(filename);
  18. 转自 https://blog.csdn.net/woshi_hujunjun/article/details/7296639
posted @   江南王小帅  阅读(184)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示