sscanf函数的用法

很久以前,我以为c没有自己的splitstring函数.后来我发现了sscanf;一直以来,我以为sscanf只能以空格来界定字符串,现在我发现我错了.

int sscanf(const char *buffer, const char *format,...);它的强大功能体现在对format的支持上.
我以前用他来分隔类似这样的字符串2006:03:18:
int a,b,c;
sscanf("2006:03:18:","%d:%d:%d",a,b,c);
sscanf("2006:03:18 - 2006:04:18","%s - %s",sztime1,sztime2);
但是后来,我需要处理2006:03:18-2006:04:18,仅仅是取消了'-'两边的空格,却打破了%s对字符串的界定..

再后来发现.format-type中有%[]这样的typef filed.如果读取的字符串.不是以空格来分隔的话,就可以使用%[].
%[]类似于一个正则表达式.[a-z]表示读取a-z的所有字符,[^a-z]表示读取除a-z之外的所有字符.

所以这个问题就迎刃而解了sscanf("2006:03:18-2006:04:18","%[0-9,:]-%[0-9,:]",sztime1,sztime2);

再一次举例: iios/12ddwdff@122现在要获取/和@之间的字符
sscanf("iios/12ddwdff@122","%[%s]/%[%s]@%[],sztime1,sztime2);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值