sprintf,sscanf,snprintf
sprintf:将格式化的数据写入字符串,第一个参数是缓冲区buf。成功返回写字符的总数,失败返回一个负数
1.最简单用法:
char str[20];
sprintf(str,"%d",123);//%d指定将要被格式化的参数类型
printf("%s\n",str);
打印:123
2.指定打印宽度,不足左边补空格
char str[20];
sprintf(str,"%8d%8d",1234,5678);
printf("%s\n",str);
sprintf(str,"%-8d%-8d",1234,5678);//-就是左对齐
printf("%s\n",str);
打印: 1234 5678 //左边有4个空格
1234 5678 //左边无空格
3.控制浮点数的打印格式。%m.nf格式,其中m表示打印的宽度,n表示小数点后面的位数
char str[20];
sprintf(str,"%10.2f",3.1415926);
printf("%s\n",str);
sprintf(str,"%.4f",3.1415926);//不指定单位长度,只指定小数的位数
printf(str,"",3.1415926);
打印: 3.14 //一共10个单位的长度,但只保留2位小数,所以前面出现空格
3.1416
4.拼接字符串
char str[20];
char str1[20]="ping";
char str2[20]="hua";sprintf(str,"%s%s",str1,str2);
printf("%s\n",str);sprintf(str,"%.2s%.2s",str1,str2);//小数点后面的2表示从str1和str2取出的字符数
printf("%s\n",str);没有小数点直接用2,则是指定打印宽度
sprintf(,str"%s%s",str1,str2);
printf("%s\n",str);
打印:pinghua
pihu
ping hua //前面很多空格
用*可以代替传入数字
sprintf(str,"%.*%.*s",2,str1,2str2);
printf("%s\n",str);
打印:pihu
4.特定格式的填充
int main()
{int a = 11;char buf[20] = "";sprintf(buf,"%010d",a);printf("%s\n",buf);return 0;
}
打印:0000000011
总共10个位,不足的左边0补齐
5.sprintf函数的返回值是最终打印到缓冲区的字符数目,这里就不演示了
sscanf:从一个字符串读进与指定格式相符的数据。成功返回参数的数目,失败返回-1
char buf[20];
sscanf("123456","%s",buf);//将指定的字符串输入到buf中,只读字符串(只处理字符串)
printf("%s\n",buf);
打印:123456
1.取指定长度字符串
char buf[20];
sscanf("123456","%4d",buf);//4是指定长度。不要与sprintf的类似格式混淆
printf("%s\n",buf);
打印:1234
2.字符匹配, %[^a]匹配到a则停止匹配,正则表达式^表示字符串开始的位置。%[^a-z]表示到a-z之间的任意字母就结束匹配。%[a-z]表示匹配到a-z的任意字符。
假设每次buf都被清空
sscanf("12|34","%[^|]",buf);
printf("%s\n",buf);sscanf("abc123","%[a-z]",buf);//匹配只能连续匹配,不能跳跃匹配。匹配只能从头开始.如:%[1-9],则会匹配为空。前面匹配不到后面就不会匹配
printf("%s\n",buf);sscanf("12abc","%[^a-z]",buf);
printf("%s\n",buf);
分别打印:12
abc
12
3.指定要跳过的字符
sscanf("abKOcd","%[a-z]KO[a-z]",,buf,buf1);
printf("%s\n%s\n",buf,buf1);
打印:ab
cd
4.分割以某字符隔开的字符串,[]-[]之间的-是过滤-本身的,起过滤作用
sscanf("123-456","%[^-]-[^-]",buf,buf1);
printf("%s\n%s\n",buf,buf1);
打印:123
456
5.过滤不想截取或不需要的字符串
sscanf("abc 123 def","%s %*s %s",buf,buf1);
printf("%s\n%s\n",buf,buf1);
打印::abc
def
snprintf:最多从源串中拷贝n-1个字符到目标串中,然后末尾加\0。所以目标串的大小为n的话,将不会溢出。成功返回欲写入字符串的长度,出错返回负值
sprintf,sscanf,snprintf相关推荐
- 关于sprintf和snprintf的比较
#include <stdio.h> #include <string.h>typedef unsigned char uchar;#define BUF_SIZE 10 // ...
- 【字符串处理函数】sprintf与snprintf
sprintf与snprintf 1.功能 1.1 sprintf 1.2 snprintf 2.函数说明 2.1 sprintf 2.1.1 函数原型 2.1.2 参数列表: 2.1.3 返回值: ...
- sprintf与snprintf区别
sprintf的原型如下 int sprintf(char *str, const char &format, ...); sprintf是字符串格式化命令,主要功能是把格式化的数据写入字符串 ...
- sprintf 和 snprintf区别
sprintf 和snprintf 函数区别 sprintf 函数定义见: https://cplusplus.com/reference/cstdio/sprintf/ snprintf 函数定义见 ...
- C库函数:scanf、fscanf、printf、fprintf、sprintf、 snprintf
1. scanf 函数原型 int scanf(const char *format, ...); 功能:从标准输入 stdin 读取格式化输入. 2.fscanf 函数原型 int fscanf( ...
- fprintf,sprintf,sscanf,fscanf
c/c++语言函数: fprintf 功 能: 传送格式化输出到一个文件中 用 法: int fprintf(FILE *stream, char *format[, argument,...]); ...
- [C] 库函数 sprintf() 和 snprintf()
sprintf 发送格式化输出到 str 所指向的字符串 int sprintf(char *str, const char *format, ...) 实例: char filename[50]; ...
- C 字符串函数 sprintf()、snprintf() 详解
一.sprintf() 函数详解 在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望. 由于 sprintf 跟 printf 在用法上几乎一样,只是打印的目的地不同而已,前者 ...
- linux下c标准库位置,C 标准库 IO 使用详解
其实输入与输出对于不管什么系统的设计都是异常重要的,比如设计 C 接口函数,首先要设计好输入参数.输出参数和返回值,接下来才能开始设计具体的实现过程.C 语言标准库提供的接口功能很有限,不像 Pyth ...
最新文章
- django 动态更新属性值
- 网络编程之 TCP / UDP 及其流程比较
- 【WebRTC---入门篇】(一)WebRTC整体架构
- WiFi---AP+STA共存模式(ESP8266)
- [SHELL] LAMP一键安装脚本设计(v2.1)
- SwiftUI AsyncImage cancelled 无法加载图片
- Android:手把手教你打造可缩放移动的ImageView(下)
- 【USACO】回文平方数
- 转发和重定向又是什么“垃圾”——教你再分类
- Markowitz有效边界投资组合——利用python
- 11-linux文件操作
- 【Unity2D入门教程氵篇】简单制作一个弹珠游戏之制作场景④(设置不可破坏砖块,发布游戏设置)
- 如何设置显示网络计算机,如何在台式计算机上设置无线局域网络
- 考察思维的灵活性,僵化
- 【python基础知识学习(6)】面向对象编程
- flask搜索引擎whoosh的配置
- 客户端登录阿里云mysql数据库_Mysql数据库之数据库术语和客户端登陆
- XAMPP简介、安转、使用
- 去中心网络服务器,去IOE 去中心化_浪潮服务器_网络安全-中关村在线
- 线性代数(三十一) : 特征值与行列式以及迹的关系