zoukankan      html  css  js  c++  java
  • C语言中sscanf()函数相关用法

    1、前言

     C库函数sscanf()和scanf()函数类似,前者用于从字符串中读取格式化输入,后者则是从键盘(stdin)中格式化输入,该函数的声明如下所示:

    #include <stdio.h>
    
    int sscanf(const char *str, const char *format, ...);

    参数说明:

    • str:C语言中的字符串,该字符串作为函数检索数据的来源;
    • format:C中的字符串,包含以下各项的一个或者多个:空格字符、非空格字符和format说明符;

    对于format说明符的形式为[=%[*][width][modifiers][type=],format说明符讲解如下:

    *:这是一个可选的星号,表示数据是从流stream中读取的,但是可以被忽视,它不存储在对应的参数中;

    width:指定在当前中读取操作中的最大字符数;

    modifiers:为对应的附加参数所指向的数据指定一个不同于整型(针对 d、i 和 n)、无符号整型(针对 o、u 和 x)或浮点型(针对 e、f 和 g)的大小: h :短整型(针对 d、i 和 n),或无符号短整型(针对 o、u 和 x) l :长整型(针对 d、i 和 n),或无符号长整型(针对 o、u 和 x),或双精度型(针对 e、f 和 g) L :长双精度型(针对 e、f 和 g);

    type:一个字符,指定了要被读取的数据类型以及数据读取方式。

    对于type类型说明符,详情如下:

    c:单个字符,读取下一个字符,如果指定了一个不为1的width,函数会读取width个字符,并通过参数传递,将它们存储在数组中的连续位置,对应的参数类型为char *;

    d:十进制数,数字前面的+或-号是可选的,对应的参数类型为int *;

    e,E,f,g,G:浮点数,包含了一个小数点、一个可选的前置符号+或-、一个可选的后置字符e或E以及一个十进制数,对应的参数类型为float *;

    o:八进制整数,对应的数据类型为int *;

    s:字符串,函数将连续读取字符,直到遇到空格字符,对应参数类型为char *;

    u:无符号的十进制数,对应参数类型为unsigned int *;

    x,X:十六进制整数,对应参数类型为int *。

    •  附加参数:该函数接受一系列的指针作为附加参数,每一个指针都指向一个对象,对象的类型由format字符串相应的%标签指定,参数与%标签的顺序相同。

     函数返回值:

    函数如果调用成功,将返回成功匹配和赋值的个数,如果达到文件末尾或发生读错误,则返回EOF。

    2、sscanf()用法实例

     接下来对一个简单的实例进行演示,实例代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main(int argc, char *argv[])
    {
       int day, year, ret;
       char weekday[20], month[20], date[50];
    
       strcpy( date, "Saturday March 20 2000" );
       ret = sscanf( date, "%s %s %d  %d", weekday, month, &day, &year );
       if (ret != 4) {
           printf("date string format failed
    ");
           return ret;  
       }
    
       printf("%s %d, %d = %s
    ", month, day, year, weekday );
       return(0);
    }

    对上面的实例进行编译,并执行:

    $ gcc sscanf.c -o sscanf
    $ ./sscanf

    最后执行效果如下所示:

    从运行结果,可以看到,字符串的格式化成功,对应的值已经成功写进变量中。

  • 相关阅读:
    测试工作——XML
    js call apply
    JavaScript 作用域和作用域链
    hybird app
    正则表达式
    浏览器渲染原理
    head 头标签(转发)
    参考资料地址
    unix 常用命令
    phantomjs 自动化测试
  • 原文地址:https://www.cnblogs.com/Cqlismy/p/12113180.html
Copyright © 2011-2022 走看看