C语言中自带的sscanf函数拥有处理字符串的功能,可以减去手写字符串处理的过程。
1、取开头数字
s="123abc";
sscanf(s,"%d",&n);
sscanf(s,"%s",s1);
printf("n=%d,s1=%s\n",n,s1);
sscanf(s,"%d%s",&n,s1);
printf("n=%d,s1=%s\n",n,s1);
//输出结果
//n=123,s1=123abc
//n=123,s1=abc
2、取指定长度的串
格式:"%长度s"
s="123456";
sscanf(s,"%2s%4s",s1,s2);
printf("s1=%s,n2=%s\n",s1,s2);
//输出结果
//s1=12,n2=3456
3、取到某个字符,或某个字符集中的字符 为止
格式:"%[^字符或字符集]"
s="123abc/DEF";
sscanf(s,"%[^/]%[^A-Z]",s1,s2);
printf("s1=%s,s2=%s\n",s1,s2);
//输出结果
//s1=123abc,s2=/
sscanf(s,"%[^/]",s1);
sscanf(s,"%[^A-Z]",s2);
printf("s1=%s,s2=%s\n",s1,s2);
//输出结果
//s1=123abc,s2=123abc/
4、取某个字符集内的所有字符
格式:"%[字符集]"
s="123ABCabc";
sscanf(s,"%[0-9]%[A-Z]%[a-z]",s1,s2,s3);
printf("s1=%s,s2=%s,s3=%s\n",s1,s2,s3);
//输出结果
//s1=123,s2=ABC,s3=abc
5、加*舍弃取到的串
格式:"%*[格式可以为以上任意]
s="1234abcd";
sscanf(s,"%*[0-9]%[a-z]",s1);
printf("s1=%s\n",s1);
//输出结果
//s1=abcd
6、跳过某些串或字符
格式:"%[]要跳过的字符%[]"
s="1234CC5678";
sscanf(s,"%[0-9]CC%[0-9]",s1,s2);
printf("s1=%s,s2=%s\n",s1,s2);
//输出结果
//s1=1234,s2=5678
7、取指定字符中间的字符串(3+5+6组合技)
格式:"%*[^字符1]字符1%[^字符2]"
s="123<qwer>123";
sscanf(s,"%*[^<]<%[^>]",s1);
printf("s1=%s\n",s1);
//输出结果
//s1=qwer
8、当然你可以任意组合,合成更多组合技,比如如何提取网址,如何提取邮箱......
en,就是这样