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


 

转载于:https://www.cnblogs.com/du_utopia/archive/2010/03/30/1700908.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值