当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 讲师博文 > sscanf函数的用法

sscanf函数的用法 时间:2014-09-16      来源:未知

函数原型:int sscanf(const char *str, const char *format, [argument]...);

函数功能:sscanf会从str里读进数据,依照format的格式将数据写入到argument里。

参数:str存储的数据

format格式控制字符串

argument 选择性设定字符串

返回值:成功则返回参数数目,失败则返回-1,错误原因存于errno中。

format支持的常见格式如下:

%[a-z] 表示匹配a到z中任意字符

%[aB'] 匹配a、B、'中一员,贪婪性

%[^a] 匹配非a的任意字符,并且停止读入,贪婪性

示例代码如下:

#include <stdio.h>
        
        #define N 128
        int main()
        {
        char buf[N] = {0};
        
        sscanf("123456", "%s", buf);
        printf("%s\n", buf); //结果为:123456
        
        //取指定长度的字符串
        sscanf("123456", "%4s", buf);
        printf("%s\n", buf); //结果为:1234
        
        // 取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串
        sscanf("12345 6abcdef", "%[^ ]", buf);
        printf("%s\n", buf); //结果为:12345
        
        //取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串
        sscanf("1B2A3456abcdefBCDEF", "%[1-9a-z]", buf);
        printf("%s\n", buf); //结果为:1
        
        //取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串
        sscanf("12A3456abcdefBCDEF", "%[^A-Z]", buf);
        printf("%s\n", buf); //结果为:12
        
        //给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中
        
        sscanf("iios/12DFSD@122", "%*[^/]/12D%[^@]", buf);
        printf("%s\n", buf); //结果为:FSD
        
        //给定一个字符串“h e,l, world”,去掉第一个字符串。(注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)
        sscanf("h e,l lloworld", "%*s%s", buf);
        printf("%s\n", buf); //结果为:e,1
        
        return 0;
        }

程序执行结果如下:

linux@ubuntu:~/thread/alarm$ cc sscanf.c 
        linux@ubuntu:~/thread/alarm$ ./a.out 
        123456
        1234
        12345
        1
        12
        FSD
        e,l

上一篇:基于S5PC100裸机程序之SPI(下)

下一篇:Java设计模式之单例模式

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2022 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部