%[] 扫描字符集合

扫描集是用于字符串读取的一个工具,它可以比%s更灵活地控制读取过程,具体如下:
%[]的中括号中需要填写一个正则表达式,用于指明只读取那些字符或者不读取那些字符,
当中括号内的内容不是以^开头的时候,表示只读取在中括号中出现的内容,当遇到第一个没有出现的字符时,就停止读取,并把目前已经读取的内容保存到对应的字符数组中,例如:
char a[80];
scanf("%[0-9]",a); //只读取数字。
假设输入为:
123a456
那么上面的scanf()将把123读取并保存到a数组中,其余的a456将遗留在缓冲区中。
如果把上面的scanf()调用改为如下形式:
scanf("%[13579]",a);
并且输入如下:
123
那么将只读取1,并把它做为字符串保存到a 中,其余字符将遗留在缓冲区中,因为第二个字符’2‘没有出现在扫描集中,所以不再继续读取。
如果扫描集的第一个字符是^,那么读取规则就变成了只读取没有出现在扫描集中的字符,遇到第一个出现在扫描集中的字符时,读取即告停止,例如:
scanf("%[^0-9]",a);
这个调用将只读取非数字字符,遇到数字字符时读取停止,如果输入的是:
abc009icp
那么将读取abc到a数组,其余的字符将遗留在缓冲区中。

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值