zoukankan      html  css  js  c++  java
  • c标准库(STL)系列-sscanf()

    stdio.h头文件下
    原型: int sscanf (const char *str,const char * format,…);
    format – 这是 C 字符串,包含了以下各项中的一个或多个:空格字符、非空格字符 和 format 说明符。
    format 说明符形式为

    [=%[*][width][modifiers]type=]

    具体参见后面的用法例子

    int sscanf(str, “%d”,&n) 也可以哦,思路及用法自己扩展

    作用:

    sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。 成功则返回参数数目,失败则返回0。
    将str中的内容以%d形式写入n中
    从字符串读取格式化输入。
    从一个字符串中读进与指定格式相符的数据
    .。。。。。。

    返回值类型

    int

    针对检索数据的 format 字符串中的每个 format 说明符,应指定一个附加参数。如果您想要把 sscanf 操作的结果存储在一个普通的变量中,您应该在标识符前放置引用运算符(&),例如:

    int n;
    sscanf (str,"%d",&amp);
    

    注意:sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源。
    与scanf的区别:scnaf只是将str换为由屏幕输入

    #用法

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    int main(){
        char str[100];
        //用法一:取指定长度的字符串
        sscanf("12345","%4s",str);
        printf("用法一
    str = %s
    ",str);
    
        //用法二:格式化时间
        int year,month,day,hour,minute,second;
        sscanf("2013/02/13 14:55:34","%d/%d/%d %d:%d:%d",&year,&month,&day,&hour,&minute,&second);
        printf("用法二
    time = %d-%d-%d %d:%d:%d
    ",year,month,day,hour,minute,second);
    
        //用法三:读入字符串
        sscanf("12345","%s",str);
        printf("用法三
    str = %s
    ",str);
    
        //用法四:%*d 和 %*s 加了星号 (*) 表示跳过此数据不读入. (也就是不把此数据读入参数中)
        sscanf("12345acc","%*d%s",str);
        printf("用法四
    str = %s
    ",str);
    
        //用法五:取到指定字符为止的字符串。如在下例中,取遇到'+'为止字符串。
        sscanf("12345+acc","%[^+]",str);
        printf("用法五
    str = %s
    ",str);
    
        //用法六:取到指定字符集为止的字符串。如在下例中,取遇到小写字母为止的字符串。
        sscanf("12345+acc121","%[^a-z]",str);
        printf("用法六
    str = %s
    ",str);
        return 0;
    }
    1. 常见用法。
    1
    2
    3
    charbuf[512];
    sscanf("123456","%s",buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!
    printf("%s
    ",buf);
    结果为:123456
    2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。
    1
    2
    sscanf("123456","%4s",buf);
    printf("%s
    ",buf);
    结果为:1234
    3. 取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。
    1
    2
    sscanf("123456abcdedf","%[^]",buf);
    printf("%s
    ",buf);
    结果为:123456
    4. 取仅包含指定字符集的字符串。如在下例中,取仅包含19和小写字母的字符串。
    1
    2
    sscanf("123456abcdedfBCDEF","%[1-9a-z]",buf);
    printf("%s
    ",buf);
    结果为:123456abcdedf
    当输入:  sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf);
    1
    printf("%s
    ",buf);
    结果为:123456BCDEF
    5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
    1
    2
    sscanf("123456abcdedfBCDEF","%[^A-Z]",buf);
    printf("%s
    ",buf);
    结果为:123456abcdedf
    6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,
    先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中
    1
    2
    sscanf("iios/12DDWDFF@122","%*[^/]/%[^@]",buf);
    printf("%s
    ",buf);
    结果为:12DDWDFF
    7、给定一个字符串“hello, world”,仅保留world。
    (注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)
    1
    2
    sscanf(“hello,world”,"%*s%s",buf);
    printf("%s
    ",buf);
    结果为:world
    %*s表示第一个匹配到的%s被过滤掉,即“hello,”被过滤了
    如果没有空格则结果为NULL
  • 相关阅读:
    孩孩,你妈正在生你。。。。。。。。
    想写点关于fpga以及软核nios2的入门文章
    源代码阅读工具SourceNavigator 在ubuntu 9.04下的安装与问题解决
    真理与知识
    需要思考的十对矛盾
    【Git】将已被推送到远程仓库的文件or文件夹,从远端删除
    明天是个大日子
    C# 编码规范
    Linux 登录 Mysql 数据库
    Linux Ubuntu 16.04 安装 .Net Core
  • 原文地址:https://www.cnblogs.com/AmosAlbert/p/12832260.html
Copyright © 2011-2022 走看看