sprintf 组包 sscanf解包

简介: sprintf 组包 sscanf解包

一:sprintf 组包


void test01()  
{      
int year = 2019;      
int mon = 8;      
int day = 1;        
//需求:将2019 8 1组成 2019年8月1日      
char buf[64]="";      
int len = sprintf(buf,"%d年%d月%d日",year,mon,day);      
printf("len = %d\n", len);      
printf("%s\n", buf);        
//需求:小明:18:男:北京海淀区      
char name[]="小明";      
int age = 18;      
char sex[]="男";      
char addr[] ="北京海淀区";       
char buf2[128]="";      
len = sprintf(buf2,"%s:%d:%s:%s",name,age,sex,addr);      
printf("len = %d\n", len);      
printf("%s\n", buf2);        
//上线:版本号:块编号:主机名:用户名:功能:附加消息        
//使用sprintf将数值 转成 字符串      
char buf3[16]="";      
sprintf(buf3,"%d",128);      
printf("buf3=%s\n", buf3);  }  


20200328211759956.png


二:sscanf 解包


20200328212221881.png


void test01()  
{      
char msg[]="2019年8月2日";      
int year = 0;      
int mon = 0;      
int day = 0;        
//%d只能提取'0'~'9'      
sscanf(msg,"%d年%d月%d日",&year,&mon,&day);      
printf("year = %d\n",year);      
printf("mon = %d\n",mon);      
printf("day = %d\n",day);        
//%c 提取一个字符  %f提取浮点数      
char ch=0;      
sscanf(msg,"%c年", &ch);      
printf("ch = %c\n", ch);        
//%s 提取一个字符串 遇到空格、回车、'\0'就会停止获取      
char str_year[32]="";      
char str_mon[32]="";      
char str_day[32]="";      
//char msg[]="2019年8月2日";      
sscanf(msg,"%s年%s月%s日", str_year, str_mon,str_day );      
printf("str_year =%s\n", str_year);//2019年8月2日      
printf("str_mon =%s\n", str_mon);      
printf("str_day =%s\n", str_day);  }  


20200328212931164.png


案例:sscanf 使用%*s或%*d


20200328213339277.png


20200328213404541.png

相关文章
|
10月前
|
Linux C语言 开发者
深入解析Linux环境下的scanf()、sscanf()和fscanf()函数
在C语言中,`scanf()`、`sscanf()`和`fscanf()`是用于输入的三个常用函数。它们允许开发者从标准输入、字符串和文件中按照指定的格式读取数据。在Linux环境下,这些函数被广泛用于处理各种输入。本文将详细介绍这三个函数的用法,包括格式化字符串的语法和一些常见的使用场景。
526 1
|
2月前
|
C语言
【C语言】:浅谈函数 fscanf/sscanf 和 fprintf/sprintf
【C语言】:浅谈函数 fscanf/sscanf 和 fprintf/sprintf
26 1
|
2月前
fgets函数和fputs函数的使用
fgets函数和fputs函数的使用
|
3月前
|
数据格式
sprintf函数
sprintf函数
33 0
|
3月前
|
C语言
文件操作(二、scanf/fscanf/sscanf​与printf/fprintf/sprintf​、fseek与ftell与rewind、feof)
文件操作(二、scanf/fscanf/sscanf​与printf/fprintf/sprintf​、fseek与ftell与rewind、feof)
|
安全 C++ 数据格式
C++ 字符串格式化转为 数据变量 - sscanf,sscanf_s及其相关用法
C++ 字符串格式化转为 数据变量 - sscanf,sscanf_s及其相关用法
183 0
|
编译器 C++
文件操作以及相关的函数,fputc,fgetc,fputs,fgtes,fprintf,fscanf,sprintf,sscanf
🐰文件操作 🌸打开文件 🏡文件的顺序读写 🌸fputc字符输入函数(适合所有输入流) 🌸fgetc(适合所有的输出流) 🌸fputs(适合所有的输入流) 🌸fgets(适合所有的输出流) 🏡格式化的读写 🌸fprintf(适合所有的输入流) 🌸fscanf读取文件(适合所有的输出流) 🏡流 🌸屏幕这个流(stdout)输出 🏡对比:printf/fprintf/sprintf和scanf/fscanf/sscanf 🌸sprintf(把格式化数据转换成字符串) 🌸sscanf(把字符串转换成相应格式化数据)
scanf fscanf sscanf printf fprintf sprintf的区别和使用 fseek的使用
scanf fscanf sscanf printf fprintf sprintf的区别和使用 fseek的使用
104 0
字符串的格式化sprintf与sscanf详解
字符串的格式化sprintf与sscanf详解
168 0
字符串的格式化sprintf与sscanf详解