sscanf函数的高级用法

 sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源。 

intsscanf(constchar*format[,argument]...); 
其中的format可以是一个或多个:{%[*][width][{h|l|I64|L}]type|''|'\t'|'\n'|非%符号}, 
注: 
1)、 * 亦可用于格式中,(即 %*d 和 %*s) 加了星号 (*) 表示跳过此数据不读入。 (也就是不把此数据读入参数中) 
2)、{a|b|c}表示a,b,c中选一,[d],表示可以有d也可以没有d。 
3)、width:宽度,一般可以忽略,用法如: 
    const charsourceStr[]="hello,world"; 
    charbuf[10]={0}; 
    sscanf(sourceStr,"%5s",buf);  //%5s,只取5个字符 
    cout<<buf<<endl; 
    结果为:hello 
4)、{h|I|I64|L}:参数的size,通常h表示单字节size,I表示2字节 size, 
     L表示4字节size(double例外),l64表示8字节size。 
5)、type:这就很多了,就是%s,%d之类。 
6)、特别的:%*[width][{h|l|I64|L}]type 表示满足该条件的被过滤掉, 
    不会向目标参数中写入值。如: 
    constcharsourceStr[]="hello,world"; 
    char buf[10]={0}; 
    sscanf(sourceStr,"%*s%s",buf); 
    //%*s表示第一个匹配到的%s被过滤掉,即hello被过滤了 
    cout<<buf<<endl; 
    结果为:world 
7)、支持集合操作: 
    %[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配) 
    %[aB'] 匹配a、B、'中一员,贪婪性 
    %[^a]  匹配非a的任意字符,贪婪性 
    和正则表达式很相似,而且仍然支持过滤,即可以有%*[a-z]。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值