sscanf 函数简介

sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源。  
   
  函数原型:  
   
  int   sscanf(   const   char   *format   [,argument]...   );  
  其中的format可以是一个或多个   {%[*]   [width]   [{h   |   l   |   I64   |   L}]type     |     '   '   |     '/t'   |   '/n'   |   非%符号},  
   
  注:{a|b|c}表示a,b,c中选一,[d],表示可以有d也可以没有d。  
   
     
   
    width:宽度,一般可以忽略,用法如: 

  const     char   sourceStr[]   =   "hello,   world";  
   
  char   buf[10]   =   {0};  
   
  sscanf(sourceStr,   "%5s",   buf);       //%5s,只取5个字符  
   
  cout   <<   buf<<   endl;  
   
  结果为:hello  
   
    {h   |   l   |   I64   |   L}:参数的size,通常h表示单字节size,I表示2字节   size,L表示4字节size(double例外),l64表示8字节size。  
   
  type   :这就很多了,就是%s,%d之类。  
   
   
   
  特别的:  
   
  %*[width]   [{h   |   l   |   I64   |   L}]type     表示满足该条件的被过滤掉,不会向目标参数中写入值。如:  
   
  const     char   sourceStr[]   =   "hello,   world";  
   
  char   buf[10]   =   {0};  
   
  sscanf(sourceStr,   "%*s%s",   buf);       //%*s表示第一个匹配到的%s被过滤掉,即hello被过滤了  
   
  cout   <<   buf<<   endl;  
   
  结果为:world  
   
  支持集合操作:  
   
                    %[a-z]     表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)  
   
                    %[aB']     匹配a、B、'中一员,贪婪性  
   
                    %[^a]         匹配非a的任意字符,贪婪性    

 

基本用法主要是3类:

1. 取指定长度的字符串 -- 使用 width 长度控制

2. 取指定格式数据  -- argument 中格式控制

3.取仅包含指定字符集的字符串 -- [] [^] 表示集合

更多用法参看 scanf 一文:

http://blog.csdn.net/jixingzhong/archive/2007/01/07/1476089.aspx

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值