sscanf的作用:从一个字符串中读进于指定格式相符的数据。利用它可以从字符串中取出整数、浮点数和字符串
sscanf:
int sscanf(const char *str, const char *format,......);
说明:
sscanf()会将参数str的字符串根据参数format字符串来转换格式并格式化数据。转换后的结果存于对应的参数。成功则返回参数数目,失败则返回0。
注意:
1.参数不支持string,使用字符串数组。如果想用可以参考使用stringsteam;
2.第二个参数实际上是一个匹配,支持正则表达式,但是部分正则表达式不支持;
常用匹配:
1. * 亦可用于格式中, (即 %*d 和 %*s) 加了星号 (*) 表示跳过此数据不读入. (也就是不把此数据读入参数中);
2. ^ 为否符号,表示不想匹配的符号;
如果^放到[]的外边则表示以[]开头的字符串;
3. | 或运算符
4.“$” 结束符
常用使用情况:
1.字符串和int类型转换;
int main(){
char s[8]="123";
int a;
sscanf(s,"%d",&a);
printf("%d",a); //输出123
}
2.取指定字符串长度
int main(){
char s[8]="abc";
char a[3];
sscanf(s,"%2s",&a);
printf("%s",a); //输出ab
}
3.正则匹配情况
取仅包含指定字符集的字符串(只要有不满足就停止匹配)
int main(){
char s[8]="11aAbc";
char a[3];
sscanf(s,"%[0-9a-z]",&a);
printf("%s",a); //输出11a
}
sprintf与sscanf相对应。