【C/C++】sscanf函数介绍和用法详解

功能

        sscanf函数是C语言中的一个输入/输出函数,它的作用是从一个字符串中提取字符串,浮点数,整数等值,并将其保存到指定的变量中。一句话总结就是从字符串读取格式化输入。

标准库

        <stdio.h>

声明(格式)

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

大白话参数说明

str

        这是 C 字符串,是函数检索数据的源。可以放置一个字符型数组的地址,但不能放string类字符串。

format

        这是 C 字符串,包含了以下各项中的一个或多个:空格字符、非空格字符 和 format 说明符。

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

大白话格式说明

        sscanf(字符型数组首地址,输入格式,具体输入内容)

        sscanf(字符型数组首地址,输入格式,具体输入内容)你其实可以看作scanf()函数里的 scanf(输入格式,具体输入内容),scanf里怎么写你在sscanf里就怎么写,你要转化的字符串就是你要输入的内容。

 返回值

        如果成功,该函数返回成功匹配和赋值的个数。

        如果到达文件末尾或发生读错误,则返回 EOF。

使用示范

sscanf()函数常与strcpy()函数和c_str()函数搭配使用。

strcpy(a,b),将字符串b复制到字符串a后面;s.c_str():把string 对象s转换成c中的字符型数组样式

这两个函数都是string类的,用的时候需要加头文件#include<string.h>.

示范一

int n,amp;
char str[10] = {"11035 210"};
n = sscanf(str,"%d",&amp);

示范二

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

int main()
{
   int day, year;
   char weekday[20], month[20], dtm[100];

   strcpy( dtm, "Saturday March 25 1989" );
   sscanf( dtm, "%s %s %d  %d", weekday, month, &day, &year );

   printf("%s %d, %d = %s\n", month, day, year, weekday );
    
   return(0);
}

示范三

int get(string s)
{
    int hour, minute, second;
    /*
    char dtm[N];

    //strcpy(a,b),将b复制到a后面;
    //s.c_str():把string 对象s转换成c中的字符型数组样式
    strcpy(dtm,s.c_str());  
    sscanf(dtm, "%d:%d:%d", &hour, &minute, &second);    
    可转化为下面这一行
    */
    
    sscanf(s.c_str(), "%d:%d:%d", &hour, &minute, &second);
    
    return hour * 3600 + minute * 60 + second;
}

 该段代码来自L2-042 老板的作息表 (25分)

参考

1.c语言的sscanf函数的用法讲解

2.C 库函数 – sscanf() | 菜鸟教程 (runoob.com)

其他

sprintf函数介绍和用法详解,我感觉它和sscanf很类似。

        

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值