sscanf 之 正则表达式

先看一小程序:

#include <stdio.h>
int main()
{
const char* s = "hello/Yulay@122";
char buf[20];
sscanf( s, "%*[^/]/%[^@]", buf );
printf( "%s\n", buf );
return 0;
}
结果为:Yulay

总结:

%*[^/]:读入一个不是‘\’ 字符串,遇到该字符停止,但是该字符串不保存到变量里,也就是把其舍去;

%[^@]:读入一个不是‘@’字符串,遇到该字符停止,但是该串保存到变量里。

再如:("%*c%*[^\n]");

这条语句中%*c表示, 读入一个字符,但是这个字符不保存到变量里,所以后面不需要有对应的char型的参数。%*[^\n]表示读入一个字符串,字符串里的字符只能是由[]里指定的字符,并且这个字符串也不保存。假如是%*[abcd], 只能输入abcd所组成的字符串,如aabbddcc,如果遇到其他字符,scanf函数就会返回。

这里是%*[^\n],  ^表示“非”的意思, \n是换行, %*[^\n]表示读入所有不是换行的字符。

所以 scanf("%*c%*[^\n]");表示,读入一个字符,再读入一串不是换行的字符,这些都不保存,然后返回。

其实就是,跳过一行的意思。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值