sscanf函数使用详解

描述

sscanf通常被用来解析并转换字符串,其格式定义灵活多变,可以实现很强大的字符串解析功能。

sscanf的原型

在这里插入图片描述

编写小练习

#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

// 字符串拆分 sscanf
void func01()
{
    char msg[1024] = "phone:1234567;2024/5/20;崔款了";

    long long phone = 0;
    int year = 0;
    int month = 0;
    int day = 0;
    char content[64] = "";
    // 返回值 代表了成功分割个数
    int num = sscanf(msg, "phone:%lld;%d/%d/%d;%s", &phone, &year, &month, &day, content);


    printf("%lld\n",phone);
    printf("%d\n", year);
    printf("%d\n", month);
    printf("%d\n", day);
    printf("%s\n", content);

    printf("成功转换个数:%d\n", num);

        
}

/*
  格式     作用
  %*s  或   %*d  忽略数据
  %[w]s  读w个宽度的数据
  %[a - z]  匹配a到z中任意字符
  %[aBc]  匹配指定的a 、B 、c
  %[^a]  匹配非a的任意字符
  %[^a-z] 匹配非 a -z 的所有字符

*/

void func02()
{ 
    char str[1024] = "12345abcde";

    char buf[1024] = {0};

    
    sscanf(str, "%*d%s",buf);

    printf("buf:%s\n",buf);

}

void func03()
{

   // char str[1024] = "abcde 12345"; // 遇到空格或者\t 结束忽略操作

    char buf[1024] = { 0 };
    char str[1024] = "abcde12345";


    //sscanf(str, "%*s%s", buf);

    sscanf(str, "%*[a-z]%s", buf);

    printf("buf:%s\n", buf);

}

void func04()
{
    

    char str[1024] = "12345abcde";

    char buf[1024] = { 0 };


    sscanf(str, "%5s", buf);

    printf("buf:%s\n", buf);

}


void func05()
{


    char str[1024] = "12345abcde";

    char buf[1024] = { 0 };

     
    // 如果匹配失败,就不在向后进行匹配
    sscanf(str, "%*d%[a-z]", buf);

    printf("buf:%s\n", buf);

}

void func06()
{

    char str[1024] = "aaBbcCde";
    char buf[1024] = { 0 };


    sscanf(str, "%[abc]", buf);

    printf("buf:%s\n", buf);

}

void func07()
{
    char str[1024] = "aaBbcCde12345";
    char buf[1024] = { 0 };

    sscanf(str, "%[^b]", buf);

    printf("buf:%s\n", buf);




}
// 一个字符串为:abcde#wutao@12345 请将中间字符串截取
void func08()
{
    char str[128] = "abcde#wutao@12345";

    char buf[128] = "";

    sscanf(str, "%*[^#]#%[^@]",buf);

    printf("buf:%s\n",buf);



}


int main()
{

  //  func01();

  //  func02();

  // func03();

  //  func04();

  //  func05();

   // func06();

  //  func07();

    func08();

    return 0;
    system("pause");
}

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值