sscanf 是 C 标准库中的一个函数,用于从 字符串 中按照指定格式提取数据。它的作用类似于 scanf,但 scanf 是从标准输入(通常是键盘)读取数据,而 sscanf 是从一个字符串中读取数据。
函数原型
int sscanf(const char *str, const char *format, ...);
str:要解析的字符串。
format:格式字符串,指定如何解析 str。
…:可变参数,用于存储解析后的数据。
返回值
返回成功解析并存储的数据项的数量。
如果解析失败,返回 EOF。
常用格式说明符
格式说明符 含义
%d 解析一个整数。
%f 解析一个浮点数。
%c 解析一个字符。
%s 解析一个字符串(以空格分隔)。
%[…] 解析指定字符集合中的字符。
示例 1:解析整数
#include <stdio.h>
int main() {
char str[] = "123 456";
int a, b;
sscanf(str, "%d %d", &a, &b);
printf("a = %d, b = %d\n", a, b);
return 0;
}
示例 2:解析日期
#include <stdio.h>
int main() {
char date[] = "20231025";
int year, month, day;
sscanf(date, "%4d%2d%2d", &year, &month, &day);
printf("Year = %d, Month = %d, Day = %d\n", year, month, day);
return 0;
}
示例 3:解析字符串和浮点数
#include <stdio.h>
int main() {
char str[] = "Pi = 3.14159";
char name[10];
float value;
sscanf(str, "%s = %f", name, &value);
printf("Name = %s, Value = %.5f\n", name, value);
return 0;
}
sscanf 是从字符串中提取数据的强大工具。
通过指定格式字符串,可以灵活地解析各种类型的数据。