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,就是这样