sscanf
是 C 语言中的一个标准库函数,用于从字符串中读取格式化的输入。它的工作原理类似于 scanf
函数,但是 scanf
从标准输入(通常是键盘)读取数据,而 sscanf
从一个字符串读取数据。
int sscanf(const char *str, const char *format, ...);
str
:要被解析的字符串。format
:指定数据格式的格式字符串。...
:接收数据的变量列表。sscanf
函数返回成功读取并赋值的字段数。如果在读取任何数据之前发生匹配失败,则返回 0。如果在格式字符串的第一个字符之前到达字符串末尾,则返回 EOF。
sscanf
常用于解析字符串中的特定部分,例如从日志文件中提取日期和时间,或者从用户输入的字符串中获取特定格式的数据。
#include <stdio.h>
int main() {
char str[] = "2023-10-05 14:30:00";
int year, month, day, hour, minute, second;
int result = sscanf(str, "%d-%d-%d %d:%d:%d", &year, &month, &day, &hour, &minute, &second);
if (result == 6) {
printf("Year: %d, Month: %d, Day: %d, Hour: %d, Minute: %d, Second: %d
",
year, month, day, hour, minute, second);
} else {
printf("Failed to parse date and time.
");
}
return 0;
}
"2023/10/05"
,而格式字符串是 "%d-%d-%d"
,则读取会失败。sscanf
的变量有足够的空间来存储解析的数据。sscanf
之前,确保所有接收数据的变量都已初始化,以避免未定义行为。sscanf
在处理字符串时不如正则表达式灵活,如果需要更复杂的字符串解析,可以考虑使用正则表达式库。通过以上信息,你应该能够理解 sscanf
的基本概念、使用方法以及常见问题的解决方法。
领取专属 10元无门槛券
手把手带您无忧上云