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的任意字符,贪婪性


 

posted @ 2010-03-30 21:28  du's utopia  阅读(473)  评论(0编辑  收藏  举报