sscanf的使用
最近在读写XML的过程中, 要读出属性的值以便在程序中使用,xml中属性值都统一采用了字符串,但在程序中要根据不同需要读取。
比如位置信息的值“0.0 0.0 0.0” 要将其读出存在三个浮点数中。因而用到了一个简单却实用的函数(我的需求还没复杂到用正则表达式)。
sscanf() - 从一个字符串中读进与指定格式相符的数据,利用它可以从字符串中取出整数、浮点数和字符串等等
函数原型:Int sscanf( const char *, const char *, ...);
头文件: #include<stdio.h>
其与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源。
关于它的用法,网上有很多,在此就记下我用到的两个用法:
const char* attrValue = pSecAttr->Value();
float a, b, c;
sscanf(attrValue, "%f %f %f", &a, &b, &c); //将空格之间的字符读出并格式化成浮点数存到a, b, c 中
sscanf(attrValue, "%f[^ ]", &a); //遇到空格停止,将第一个空格前的字符读出并格式化存储到a中
其中sscanf的集合操作还是蛮有用的,能应付一般复杂的字符串
支持集合操作:
%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)
%[aB'] 匹配a、B、'中一员,贪婪性
%[^a] 匹配非a的任意字符,贪婪性
![](http://www.cnblogs.com/images/cnblogs_com/du_utopia/duluoming.jpg)