知识点1【sprintf组包】

案例:

int sprintf(buf,"格式",数据)
//buf:用来存放组好的报文
//"格式":按照格式组包
//数据:各个零散的数据返回值:返回值的是组好的报文的实际长度(不包含'\0')
void test06()
{int year = 2020;int mon = 2;int day = 24;int len = 0;//需求:将2020 2  24组成一个"2020年2月24日"char buf[128]="";//%d 和 year 类型要一一对应len = sprintf(buf,"%d年%d月%d日", year,mon,day);printf("len = %d\n", len);printf("buf=%s\n",buf);
}

运行结果:

 案例:

void test07()
{char name[]="梁何";int age = 18;char sex[]="男";char addr[]="重庆市潼南区";char buf[128]="";int len = 0;len = sprintf(buf,"姓名:%s 年龄:%d 性别:%s 地址:%s",name,age,sex, addr);printf("len = %d\n",len);printf("buf=%s\n",buf);}

运行结果:

将数值转成字符串:

void test08()
{int num = 2020;char buf[128]="";sprintf(buf,"%d",num);printf("buf=%s\n", buf);//"2020"
}

知识点2【sscanf解包】

 案例1:sscanf的基本语法

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

运行结果:

 sscanf的高级用法1:使用%*s %*d 跳过提取的内容(不要提取的内容)

void test10()
{int data1=0;//sscanf("1234 5678","1234 %d",&data1);//5678//sscanf("1234 5678","%*d %d",&data1);//5678sscanf("1234 5678","%*s %d",&data1);//5678printf("data1=%d\n",data1);
}

sscanf的高级用法2:使用%[n]s %[n]d 提取指定宽度n的字符串或数据

void test11()
{int data1 = 0;int data2 = 0;char buf[16]="";sscanf("12abc5678","%*5s%d" ,&data1);//5678printf("data1=%d\n",data1);sscanf("12345678","%*2s%2d%*2d%s" ,&data2, buf);//data2=34  buf="78";printf("data2 = %d\n",data2);//34printf("buf=%s\n", buf);//"78"
}

运行结果:

知识点3【sscanf高级用法】

1、%[a-z] 提取a-z的字符串

void test01()
{char buf[128]="";//%[]都是 按 字符串 提取sscanf("abcDefABC","%[a-z]",buf);printf("buf=%s\n", buf);//"abc"return;
}

2、%[aBc] 提取 a B c

void test02()
{char buf[128]="";sscanf("aaBBcEdef","%[aBc]",buf);printf("buf=%s\n", buf);//aaBBc
}

3、%[^abc] 只要不是a b c任何一个 都要

void test03()
{char buf[128]="";sscanf("ABCcABC","%[^abc]",buf);printf("buf=%s\n", buf);//ABC
}

案例:

void test04()
{char name[32]="";char addr[32]="";//sscanf("lianghe@1000phone.com","%[^@]%*1s%[^.]",name,addr );//sscanf("lianghe@1000phone.com","%[^@]%*c%[^.]",name,addr );sscanf("lianghe@1000phone.com","%[^@]@%[^.]",name,addr );printf("name=%s\n",name);//"lianghe"printf("addr=%s\n",addr);//"1000phone"
}

案例:

void test05()
{int m1=0,s1=0;int m2=0,s2=0;char song[128]="";char msg[128]="[12:13.46][8:23.45]给我一个威武雄壮的汉子";sscanf(msg,"[%d:%d%.%*d][%d:%d.%*d]%s",&m1,&s1,&m2,&s2,song);printf("%d-%d\n",m1,s1);printf("%d-%d\n",m2,s2);printf("%s\n", song);
}

运行结果:

C杂讲 字符串格式化 组包与解包相关推荐

  1. python3 format函数_Python学习教程:Python3之字符串格式化format函数详解(上)

    Python学习教程:Python3之字符串格式化format函数详解(上) 概述 在Python3中,字符串格式化操作通过format()方法或者f'string'实现.而相比于老版的字符串格式化方 ...

  2. format函数_Python学习教程:Python3之字符串格式化format函数详解(上)

    Python学习教程:Python3之字符串格式化format函数详解(上) 概述 在Python3中,字符串格式化操作通过format()方法或者f'string'实现.而相比于老版的字符串格式化方 ...

  3. 微信小程序抓包与逆向+微信小程序反编译教程+解包教程+解包工具

    免责声明 做视频的初衷是为了学习交流,是想让自己在分享过程中学习到更多的东西 本人发布的视频.环境.软件.脚本.文章.资料等,都只用于学习交流安全技术,请不要用于任何非法用途, 否则后果自付 部分技术 ...

  4. java socket发送定长报文_定长消息报文的组包与解包简单封装(Java实现)

    报文 组包 解包 在实际项目中经常会碰到不同系统之间的数据交换,有些是用webservice.有些则是使用发socket消息的方式,将需要发送的消息组装成特定格式的字符串或Xml格式的文件,再通过so ...

  5. python3中format函数列表_Python3之字符串格式化format函数详解(上)

    173.jpg 概述 在Python3中,字符串格式化操作通过format()方法或者f'string'实现.而相比于老版的字符串格式化方式,format()方法拥有更多的功能,操作起来更加方便,可读 ...

  6. python3 抓包 解包_Python结构包,解包

    python3 抓包 解包 Python struct module is capable of performing the conversions between the Python value ...

  7. ozip解密_ozip解包工具下载oppo刷机包ozip解包一加ops解包

    支持机型及测试说明 OPPO卡刷包是ozip格式,需要解密处理才能转回zip格式,第三方recovery才能刷入, 由于OPPO每个型号采用了不同的解密key,所以需要对机型做适配.本文从网络搜集整理 ...

  8. 收包与解包 - Linux C++网络编程(二十四)

    一:收包分析及包头结构定义 发包:采用 包头+包体,其中包头中记录着整个包[包头-+包体]的长度: 包头:就是一个结构: a)一个包的长度不能超过30000个字节,必须要有最大值: 伪造恶意数据包,他 ...

  9. python解包exe_解包 Python 3 的安装包

    Python 3 使用的是一种叫做 WiX Toolset 安装包格式.吐个槽:目前只见过 Python 用这种安装包格式 WiX Toolset 提供了一个工具 dark.exe 可以解开这种格式的 ...

最新文章

  1. AI时代,如何缓解CMO的决策焦虑?
  2. Spring(AbstractRoutingDataSource)实现动态数据源切换
  3. offsetLeft和style.left的区别
  4. 帮你理清 SpringBoot 与 SpringMVC 的关系
  5. SpringCloud系列之服务消费Ribbon和Feign区别
  6. 天地图卫星地图_AutoCAD使用卫星地图
  7. php输入密码才能浏览,使用php为网页设置访问密码 - 小俊学习网
  8. 安装eclipse及android,Eclipse Android 安装
  9. 全球首发!计算机视觉Polygon Mesh Processing总结7——Remeshing Local Structure
  10. springboot~读取自定义配置项
  11. IV 估计:工具变量不外生时也可以用!
  12. 计算机科学与技术有没有博士,哪些高校有计算机科学与技术一级学科博士点?...
  13. Java日志框架 -- 日志框架介绍、日志门面技术、JUL日志(JUL架构、JUL入门示例、JUL日志级别、JUL日志的配置文件)
  14. 2022年中国版权保护中心计算机软件著作权登记最全申请步骤流程
  15. cannot find -lxxx 问题的总结
  16. Outlook中Skype会议按钮丢失
  17. C语言程序设计 翁恺 中M2020春C入门练习第I段——变量、表达式、分支、循环 (2021/09/25 更新:AC代码 翻新至78题)
  18. mysql之行列转换
  19. 【单片机毕业设计】【mcuclub-jj-050】基于单片机的门禁的设计
  20. MySQL 数据库之 MMM 高可用架构构建

热门文章

  1. 案例-背景图片的使用(background)
  2. a pubhub service
  3. A. Equalize Prices Again
  4. Mac下Go的安装与配置
  5. 五面阿里拿下飞猪事业部offer,统统给你解决!
  6. 若A、B为同阶矩阵且A、B均可逆,则AB亦可逆
  7. 班级日常工作管理系统
  8. 用户头像上传(自用)
  9. 音视频开发—抖音GsyVideoPlayer视频底层分析使用
  10. csdn最详细最牛逼的 阿里最新app自动化测试---自动化测试框架搭建