目录
一、sprintf 用于组包
应用1:按照规定格式组包
应用2:将数值类型转换成字符串类型
二、sscanf 用于解包
应用1:%d提取数值‘0’~‘9’
应用2:%s提取字符串(遇到'\0' 空格 回车结束提取)
三、sscanf高级应用
1、跳过数据%*d %*s(*表示跳过该数据)
2、读取指定宽度的数据:%[width]s %[width]d
%[width]s的举例:
%[width]d举例:
综合案例分析:字符串"12345678"中将34用整数提取 67用字符串提取
3、%[a-z] 表示读取 a 到 z 中任意字符,可叠加读取
%[a-z]读取:
%[a-z,A-Z,0-9]叠加读取:
4、%[aBc] 读取 a、B、c,具有贪婪性。
5、%[^AB] 匹配非 A,B 的任意字符,贪婪性
四、const详解
1、const修饰普通变量 为只读变量
2、const 修饰*
3、const 修饰 指针变量
4、const 既修饰* 又修饰指针变量
一、sprintf 用于组包
组包:按照需要的格式 组成字符串
头文件:#include<stdio.h>
用法:int sprintf(char *str, const char *format,...);
sprintf返回值为实际组包的长度
str -- 这是 C 字符串,是函数检索数据的源。
format -- 这是 C 字符串,包含了以下各项中的一个或多个:空格字符、非空格字符 和 format 说明符。
应用1:按照规定格式组包
应用2:将数值类型转换成字符串类型
二、sscanf 用于解包
解包:解析特定格式的数据
头文件:#include<stdio.h>
用法:int sscanf(const char *str, const char *format, ...)
应用1:%d提取数值‘0’~‘9’
应用2:%s提取字符串(遇到'\0' 空格 回车结束提取)
三、sscanf高级应用
1、跳过数据%*d %*s(*表示跳过该数据)
例:sscanf("1234 5678", "%*d %s", buf);//buf="5678"
2、读取指定宽度的数据:%[width]s %[width]d
%[width]s的举例:
%[width]d举例:
综合案例分析:字符串"12345678"中将34用整数提取 67用字符串提取
3、%[a-z] 表示读取 a 到 z 中任意字符,可叠加读取
注:从前往后尽可能多的读取,不匹配时立即退出
%[a-z]读取:
%[a-z,A-Z,0-9]叠加读取:
4、%[aBc] 读取 a、B、c,具有贪婪性。
注:从前往后尽可能多的读取,不匹配时立即退出,流指针也不会往下移。
5、%[^AB] 匹配非 A,B 的任意字符,贪婪性
扩展: %[^A-Z]匹配非 A到Z 的任意字符,贪婪性。
四、const详解
1、const修饰普通变量 为只读变量
例:const int num=10;//num为只读,只能初始化,不能被赋值。
2、const 修饰*
const int *p
在使用中:
*p是只读 不可通过*p 修改p所指向的空间内容
p 可读可写 p可以指向其他空间
3、const 修饰 指针变量
int * const p = &num;
在使用中:
*p可读可写 可以通过*p修改p指向的空间内容
p只读 除了初始化 不能修改p的指向
4、const 既修饰* 又修饰指针变量
const int *const p
在使用中,*p和p都只读。文章来源:https://www.toymoban.com/news/detail-578658.html
文章来源地址https://www.toymoban.com/news/detail-578658.html
到了这里,关于【C语言】深入解密C语言组包与解包的用法、应用以及const的详细解说的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!