各种sscanf用法,持续更新中

本文深入探讨了sscanf函数的使用方法,包括基本格式控制符的解析、字符集匹配、忽略字符等功能,通过实例展示了如何从字符串中精确读取所需数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

公司代码喜欢sscanf,sprintf等函数,字符串比对确实有大用处,记录下

#include <stdio.h>
int main()
{
    char buf[512] = "";
    sscanf("123456","%s",buf);
    printf("buf = %s\n",buf); //123456

    sscanf("123456","%4s",buf);
    printf("buf = %s\n",buf);//1234

    sscanf("123456abds","%[^d]",buf);
    printf("buf = %s\n",buf);//123456ab  取到d为止

    sscanf("123456abcBGFDd","%[1-9a-z]",buf);
    printf("buf = %s\n",buf);//123456abc 遇到不符合1-9,a-z条件直接退出
    
    sscanf("ios/4324@345","%*[^/]/%[^@]",buf);
    printf("buf = %s\n",buf);//*代表忽略第一个到/直接的字符,也就是ios,然后取到@之间的就是4324

    sscanf("hello world","%*s%s",buf);
    printf("buf = %s\n",buf);//忽略hello,遇到空格停止,所以结果是world.

    sscanf("hello _world","%*s _%s",buf);
    printf("buf = %s\n",buf);//world,注意%s 与_%s中间有空格

    //注意:以下这种情况,不匹配会直接后面全部忽略
    char buf2[10]="";
    char buf3[10]="";
    sscanf("Cmd=1223|Job=43|name=111","Cmd=%[^|]|ip=%[^|]|name=%[^|]|",buf,buf2,buf3);
    printf("buf = %s,buf2=%s,buf3=%s\n",buf,buf2,buf3);
    sscanf("Cmd=1223|Job=43|name=111","Cmd=%[^|]|Job=%[^|]|name=%[^|]|",buf,buf2,buf3);
    printf("buf = %s,buf2=%s,buf3=%s\n",buf,buf2,buf3);
    sscanf("Cmd=1223|Job=43|name=111","Cmd=%[^|]|Job=%*[^|]|name=%[^|]|",buf,buf2);
    printf("buf = %s,buf2=%s\n",buf,buf2);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值