广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    C++:sscanf函数的用法

    来源:网络收集  点击:  时间:2024-03-10
    【导读】:
    绪:头文件 #include iostream里,sscanf具有从字符串中取出整数,浮点数,和字符串等功能;本文主要介绍sscanf函数的定义,用法和示例;方法/步骤1/7分步阅读

    sscanf定义:

    int sscanf (const char *str, const char * format,........);

    函数说明:

    sscanf将str字符串以format格式进行转换,并将转换的结果存于对应的参数内。

    返回值:

    成功则返回参数数目;

    失败则返回-1;

    例如:sscanf(str,%d%d%s, i,i2, s);

    如果三个都读入成功,则返回3;

    如果只读入第一个整数到i则返回1。

    2/7

    用法一:从字符串中去除整数,浮点数,和字符串等;

    #include iostream

    using namespace std;

    int main()

    {

    int i;

    unsigned int j;

    char input=10 0x1b aaaaaaaa bbbbbbbb;

    char s;

    sscanf(input,%d %x %5 %*s %f,i,j,s,s);

    printf(%d %d %s ,i,j,s);

    getchar();

    return 0;

    }

    3/7

    用法二:

    格式:

    sscanf(stringBuf.c_str(), %20#%20,......)

    语句中,中的内容含义为:

    “%”符号用于声明字符串,比“%s”更具体,可以用于设置读取的样式。

    例如“%”只读取小写字母,读到其它字符就结束。

    注意,方括号中如果有“^”,代表一直读到某字符为止。

    例:

    “%”:读取字符串,一直到出现“#”号为止。

    “%20”:读取20个字节的字符串,出现“#”号时结束。

    所以,“%20#%20”的意义就是:

    读取两个20字节大小的字符串,第一个字符串可以用#结束,第二个字符串可以用回车符结束。

    4/7

    用法三:

    sscanf可以从字符串中取出整数、浮点数和字符串等等。

    ①常见用法。

    char str={0};

    sscanf(123456,%s,str);

    printf(str=%s, str);

    ②取指定长度的字符串。

    如在下例中,取最大长度为4字节的字符串。

    sscanf(123456,%4s,str);

    printf(str=%s, str);

    ③取指定字符为止的字符串。

    如在下例中,取遇到空格为止字符串。

    sscanf(123456abcdedf,%, str);

    printf(str=%s, str);

    ④取仅包含指定字符集的字符串。

    如在下例中,取仅包含1到9和小写字母的字符串。

    sscanf(123456abcdedfBCDEF,%,str);

    printf(str=%s,str);

    ⑤取指定字符集为止的字符串。

    如在下例中,取遇到大写字母为止的字符串。

    sscanf(123456abcdedfBCDEF,%,str);

    printf(str=%s,str);

    5/7

    应用四:

    名称:

    sscanf() - 从一个字符串中读进与指定格式相符的数据.

    语法:

    int sscanf( string str, string fmt, mixed var1, mixed var2 ... );

    用法:

    每一个%d、%s对应一个参数, 按顺序var1, var2 ...,

    %d读入一个整数到参数中, 而%s 读入一个字符串.

    *亦可用于格式中,即%*d 和%*s,加了星号 (*) 表示跳过此数据不读入。

    sscanf()返回符合格式的%d和%s总数;

    6/7

    sscanf的应用:

    一个文本文件,

    每行是一条记录,

    每条记录中包含多个字段,

    每个字段之间以某种定界符分开;

    举例如下:

    Notebook, IBM, ThinkPad X32, 6, 12000

    各字段以逗号分隔,内容依次是:物品名称,生产厂家,型号,数量,价格;

    如果要对这样的一行记录进行处理,提取出各个字段,怎么做比较好呢?

    用标准库函数sscanf,处理这样的数据,只需一行就可以了。

    核心部分如下:

    float price;

    int quantity;

    char category, name;

    char vendor, sku;

    char buf;

    fp = fopen(filename, r);

    fgets(buf, 200, fp);

    sscanf(buf, %20#%20#%f#%i#%20#%20,name, sku, price, quantity, category, vendor);

    其中:

    %20#-最多读入20个字符,直到遇见界定符#,但不包含界定符

    %f#-读入一个浮点数,直到遇见界定符#

    %i#-读入一个整数,直到遇见界定符#

    %20-最多读入20个字符,忽略行尾的回车符

    7/7

    示例:

    sscanf(user, %127:%127, user_name, password);

    其中:

    %127:%127,是正则表达式

    127表示最多可以接受127个字符,

    是正则表达式,表示非:,到:结束

    %127,是正则表达式,表示非 ,到 结束

    所以,如果user是wpc:123456的字符串,

    那么经过上面的sscanf后,user_name是wpc,而password是123456。

    注意事项

    sscanf具有从字符串中取出整数,浮点数,和字符串等功能;

    成功则返回参数数目; 失败则返回-1;

    %”:读取字符串,一直到出现“#”号为止。 “%20”:读取20个字节的字符串,出现“#”号时结束。

    SSCANFSCANFSSCANF函数
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_309761.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-05 16:04:36  耗时:0.032
    0.0323s