一: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); }
二:sscanf 解包
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); }
案例:sscanf 使用%*s或%*d