sscanf函数使用详解
sscanf函数原型
#include <stdio.h>
int sscanf(const char *str, const char *format, ...);
- str:待解析的字符串;
- format:字符串格式描述; 形式为
[=%[*][width][modifiers]type=]
- 最后是一序列数目不定的指针参数,存储解析后的数据.
使用示例
1、整形数转换
int year, month, day;
int converted = sscanf("20191103", "%04d%02d%02d", &year, &month, &day);
printf("converted=%d, year=%d, month=%d, day=%d/n", converted, year, month, day);
输出结果:
converted=3, year=2019, month=11, day=03
2、浮点数转换
double longitude, latitude;
int converted = sscanf("113.123456789 31.123456789", "%lf %lf", &longitude, &latitude);
printf("converted=%d, longitude=%.9lf, latitude=%lf/n", converted, longitude, latitude);
输出结果:
converted=2, longitude=113.123456789, latitude=31.123457
高级用法
1、数字 + 字符串
char str[32] = "";
sscanf("123456abcdedf", "%31[0-9]", str);
printf("str=%s/n", str);
输出结果:
str=123456
2、增加a-z的描述
char str[32] = "";
sscanf("123456abcdedf", "%31[0-9a-z]", str);
printf("str=%s/n", str);
输出结果:
str=123456abcdedf
3、使用*的例子:
char str[32] = "";
int ret = sscanf("123456abcdedf", "%*[0-9]%31[a-z]", str);
printf("ret=%d, str=%s/n",ret, str);
输出结果:
ret=1, str=abcdedf