sscanf()函数的使用及其实例

本文详细介绍了C语言中的sscanf函数,包括其函数原型、格式控制与常见使用示例。通过实例展示了如何取指定长度的字符串、取到特定字符为止的字符串、取包含特定字符集的字符串等。此外,还探讨了处理不同格式日期的方法和过滤字符串内容的技巧。
摘要由CSDN通过智能技术生成

资料引自: 传送门

sscanf函数原型:

Int sscanf( const char * src, const char * format, ...);
int scanf( const char * format, ...);
这两个函数很相似,只是第一个函数以src(固定字符串)作为输入,而第二个函数以标准输入stdin读取输入;
其中的format是格式控制字符串,它包含控制字符(如:%d,%i,%s等),空白字符(如:空格、制表符\t、回车换行符\n 或其连续组合)以及非空白字符;
"..."是一组指针变量,是上述函数用来保存结果值的;返回值为被成功赋值的指针变量的个数,如果该函数发生错误,则返回EOF(-1)。

格式控制format:

format可以是一个或多个 {%[*] [width] [{h | l | I64 | L}]type | 空白字符| 非空白符号}
该公式中符号解释如下:
  • {a|b|c}:表示a,b,c中选一或几个;
  • [d]:表示可以有d也可以没有d;
  • "" :亦可用于格式中, (即 %*d 和 %*s) 加了星号 () 表示跳过此数据不读入. (也就是不把此数据读入参数中) ,用法如:
const char sourceStr[] = "hello, world";  
char buf[10] = ;  
sscanf(sourceStr, "%*s%s", buf); //%*s表示第一个匹配到的%s被过滤掉,即hello被过滤了  
cout << buf<< endl; 
结果为:world  
  • width:宽度:一般可以忽略,用法如:
const char sourceStr[] = "hello, world";  

char buf[10] = ;  

sscanf(sourceStr, "%5s", buf); //%5s,只取5个字符  

cout << buf<< endl;  
  • {h | l | I64 | L}:参数的size,通常h表示单字节size,I表示2字节 size,L表示4字节size(double例外),l64表示8字节size;
  • type:即为控制字符如:d, i, f, s, p, 及集合[ ],(注意%号写在了最前面了,这里不能再加一个%号了。) 需特别注意和说明的控制符是集合%[ ]:
%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)  
%[aB'] 匹配a、B、'中一员,贪婪性  
%[^a] 匹配非a的任意字符,贪婪性  

例如取遇到空格为止字符串:

sscanf("123456 abcdedf", "
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值