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

时间:2025-04-18 14:27:28

功能

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

标准库

        <>

声明(格式)

        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<>.

示范一

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

示范二

#include <>
#include <>
#include <>

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() | ()

其他

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