这几天总遇到sprintf,下面自己来小小地总结下~
srpintf()函数的功能非常强大:效率比一些字符串操作函数要高;而且更具灵活性;可以将想要的结果输出到指定的字符串中,也可作为缓冲区,而printf只能输出到命令行上~
头文件:stdio.h
函数功能:格式化字符串,将格式化的数据写入字符串中。
函数原型:int sprintf(char *buffer, const char *format, [argument]…)
参数:
(1)buffer:是char类型的指针,指向写入的字符串指针;
(2)format:格式化字符串,即在程序中想要的格式;
(3)argument:可选参数,可以为任意类型的数据;
函数返回值:buffer指向的字符串的长度;
用处:
(1)格式化数字字符串:在这点上sprintf和printf的用法一样,只是打印到的位置不同而已,前者打印给buffer字符串,后者打印给标准输出,所以sprintf也可以用来将整型转化为字符串,比itoa效率高且如此地简便~比如:sprintf(buffer, “%d”, 123456);执行后buffer即指向字符串“123456”~
(2)连接字符:
下面通过两个例子来说明这个问题:
(a)连接以’\0’结束的字符串:

#include<stdio.h>
int main()
{char buffer[10];char *a = "1234";char *b = "5678";sprintf(buffer, "%s%s", a, b);printf("%s\n", buffer);return 0;
}

运行结果:

(b)连接结尾没有’\0’的字符数组或字符串缓冲区:

#include<stdio.h>
int main()
{char a[] = {'1', '2', '3', '4'};char b[] = {'5', '6', '7', '8'};char buffer[10];sprintf(buffer, "%.4s%.4s", a, b);printf("%s\n", buffer);return 0;
}

运行结果:

如果第二种情况的程序中,sprintf的format部分为"%4s%4s"或"%s%s",运行结果均为:

很莫名其妙吧~
(c)如果我们想动态获取要处理的字符缓冲区长度,则将上面sprintf改为:sprintf(buffer, "%.*s%.*s", sizeof(a), a, sizeof(b), b);即可~
(3)利用sprintf中的返回值:在”AOV网络和拓扑(二)——实现“篇中,有这样一行程序:pos += sprintf(output+pos, "%d ", j+1); 它的作用是什么呢?
因为sprintf函数的返回值为output+pos所指向字符串的长度,所以对于pos来说,相当于执行了一次pos+=sizeof(output+pos),如果这条语句放在一个循环里,则第二次执行sprintf时output+pos随即指向了当前缓冲区的末尾(注意不是output的末尾!否则会读取非法内存!),这样就可以生成一个具有一定规则的字符串了~写个例子:

#include<stdio.h>
int main()
{char buf[100];int pos = 0;for(int j = 0; j < 10; j++)pos += sprintf(buf+pos, "%d-", j);buf[pos-1] = '\n';//将最后一个字符'-'转换为'\n'printf(buf);return 0;
}

运行结果:

pos每次增加2,因为每次buf字符串后面都要加上两个字符j和‘-’。

sprintf的使用相关推荐

  1. sprintf 和strcpy 的差别

    sprintf据说是printf的孪生兄弟,在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望. sprintf 跟printf 在用法差不多,只是打印的目的地不同而已,前者打 ...

  2. Go 学习笔记(46)— Go 标准库之 fmt(输入/输出格式化参数、Printf/Fprintf/Sprintf区别、Println/Fprintln/Sprintln 区别)

    1. 概述 import "fmt" fmt 包实现了类似 C 语言 printf 和 scanf 的格式化 I/O .格式化动作( verb )源自 C 语言但更简单. 2. P ...

  3. sprintf函数做什么用?

    sprintf函数原型为 int sprintf(char *str, const char *format, ...).作用是格式化字符串,具体功能如下所示: (1)将数字变量转换为字符串. (2) ...

  4. 利用标准库sprintf、sscanf函数实现字符串和数字的转换

    一.sprintf() 用于将数字转化为字符串 1.将整数转化为字符串 #include<iostream> using namespace std;int main() {char st ...

  5. PHP函数printf()、sprintf()的用法

    printf()函数优点在于可以格式化输出 格式: %['padding_character][-][width][.precision]type 所有的转换说明都是以%开始,如果想打印一个%符号,必 ...

  6. fprintf、printf、sprintf、fscanf、scanf、sscanf 格式化输入输出

    格式化输入输出 1.         fprintf(格式化输出数据至文件) 相关函数  printf,fscanf,vfprintf 表头文件  #include<stdio.h> 定义 ...

  7. C++程序中常用的sprintf

    C++Sprintf sprintf(scoreArr, "%d", my_score); 首先看上面这行代码,sprintf 跟printf 在用法上几乎一样,只是打印的目的地不 ...

  8. 汇总|C++常见知识点总结,涉及文本输出、排序、生成随机数、异常处理、关联容器、printf重定向、sprintf用法、cout重定向

    文章目录 一 将程序运行结果输出到txt文本文件中 二 排序算法 三 生成随机数 四 异常处理 六 关于GitHub上zip与tar.gz的区别 七 容器中查找最大值所在的位置 八 C++中关联容器的 ...

  9. C语言中positive用法,sprintf - C语言库函数

    C库类 的 sprintf - C语言库函数 C库函数int sprintf(char *str, const char *format, ...)发送str 指向一个字符串的格式化输出. 声明 以下 ...

  10. python scapy 函数_【python|scapy】sprintf输出时raw_string转string

    最近在有python的scapy模块分析TCP报文,一直有一个关于转义字符的问题困惑着我,查找的很多资料后仍然百思不得其解,请大神指教. 请看代码: from scapy.all import * d ...

最新文章

  1. 有关RDS上只读实例延时分析-同适用于自建MySQL主从延时分析判断
  2. 2018AI和机器学习界的12个重大收购案
  3. NVL 和NVL2函数
  4. MySQL之一致性检测及数据同步
  5. UA MATH564 概率论VI 数理统计基础2 多元正态分布
  6. C++ 中 vector 的作用:
  7. loadrunner脚本设计:检查点(断言)及web_submit_data函数使用示例
  8. 汇编语言——输入两位数比较大小
  9. 1067 Sort with Swap(0, i) (25 分)思路
  10. 软件推荐┊最有效防止被聚生网管、P2P终结者等管理软件控制的小工具——ARP防火墙单机版
  11. 开发文档chm文件打不开
  12. 数据挖掘—Apriori算法
  13. 基于android终端的物联网医药物流管理系统设计公司,基于Android终端的物联网物流管理系统的设计与实现.pdf...
  14. 在线考试系统html源码,jQuery在线答题考试系统代码
  15. html 链接excel表格,excel表格超链接设置
  16. 【沉浸式腾讯云服务器部署安装docker】
  17. SwiftUI基础——创建并组合视图
  18. 从0到1一个文件,用Python 实现 Web 框架
  19. exlc表格怎么换行_excel表格中如何换行_excel表格内打字如何换行
  20. GUC-9 ReadWriteLock : 读写锁

热门文章

  1. vscode html注释,在VSCode 中如何添加自定义注释
  2. graphviz php,Graphviz
  3. 数据结构-栈及栈的应用
  4. java web 邮件_JavaWeb实现邮件发送接收功能
  5. 【读书笔记】《金锁记》
  6. nginx负载均衡的session问题
  7. C++继承的构造函数、多重继承、虚继承
  8. 淘淘商城——添加购物车
  9. html之 pre标签下的div标签测试2208082212
  10. Web安全 学习日记12 - 文件包含(File Inclusion)