设为首页收藏本站 |天气与日历| 2025-07-01 星期二 16:36:00 (建党节) 乙巳(蛇)年 六月初七 申时
     
切换到窄版

私人站点

 找回密码
 立即注册
搜索
查看: 219|回复: 0

sscanf() 数据拆包

[复制链接]

954

主题

954

帖子

3879

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3879
发表于 2021-12-7 12:41:09 | 显示全部楼层 |阅读模式
#include <stdio.h>
int sscanf(constchar *str, constchar *format, ...);
功能:从str指定的字符串读取数据,并根据参数format字符串来转换并格式化数据。
参数:
        str:指定的字符串首地址
        format:字符串格式,用法和scanf()一样
返回值:
        成功:参数数目,成功转换的值的个数
        失败: - 1

[C] 纯文本查看 复制代码
       char src[] = "a=10, b=20";[/align]        int a;
        int b;
        sscanf(src, "a=%d,  b=%d", &a, &b);
        printf("a:%d, b:%d\n", a, b);


格式
作用
%*s或%*d
跳过数据
%[width]s
读指定宽度的数据
%[a-z]
匹配a到z中任意字符(尽可能多的匹配)
%[aBc]
匹配a、B、c中一员,贪婪性
%[^a]
匹配非a的任意字符,贪婪性
%[^a-z]
表示读取除a-z以外的所有字符

[C] 纯文本查看 复制代码
//1. 跳过数据
void test01(){
        char buf[1024] = { 0 };
        //跳过前面的数字
        //匹配第一个字符是否是数字,如果是,则跳过
        //如果不是则停止匹配
        sscanf("123456aaaa", "%*d%s", buf); 
        printf("buf:%s\n",buf);
}

//2. 读取指定宽度数据
void test02(){
        char buf[1024] = { 0 };
        //跳过前面的数字
        sscanf("123456aaaa", "%7s", buf);
        printf("buf:%s\n", buf);
}

//3. 匹配a-z中任意字符
void test03(){
        char buf[1024] = { 0 };
        //跳过前面的数字
        //先匹配第一个字符,判断字符是否是a-z中的字符,如果是匹配
        //如果不是停止匹配
        sscanf("abcdefg123456", "%[a-z]", buf);
        printf("buf:%s\n", buf);
}

//4. 匹配aBc中的任何一个
void test04(){
        char buf[1024] = { 0 };
        //跳过前面的数字
        //先匹配第一个字符是否是aBc中的一个,如果是,则匹配,如果不是则停止匹配
        sscanf("abcdefg123456", "%[aBc]", buf);
        printf("buf:%s\n", buf);
}

//5. 匹配非a的任意字符
void test05(){
        char buf[1024] = { 0 };
        //跳过前面的数字
        //先匹配第一个字符是否是aBc中的一个,如果是,则匹配,如果不是则停止匹配
        sscanf("bcdefag123456", "%[^a]", buf);
        printf("buf:%s\n", buf);
}

//6. 匹配非a-z中的任意字符
void test06(){
        char buf[1024] = { 0 };
        //跳过前面的数字
        //先匹配第一个字符是否是aBc中的一个,如果是,则匹配,如果不是则停止匹配
        sscanf("123456ABCDbcdefag", "%[^a-z]", buf);
        printf("buf:%s\n", buf);
}


相关视频资料!
「03-sscanf的使用.avi」  链接:https://www.aliyundrive.com/s/k17J1xSKbtG

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|编程站点 ( 冀ICP备2023028127号-2 )|友链申请|

GMT+8, 2025-7-1 16:36 , Processed in 0.093318 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表