|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
支持集合操作; p$ | ?" [8 n, h. b
) H+ A7 U! I/ t! Q1 e
: |* b% u: ^: z( b
%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)' o' \" Y7 S9 x7 A2 q
%[aB'] 匹配a、B、'中一员,贪婪性
+ _$ e/ f; j& D3 _3 M%[^a] 匹配非a的任意字符,并且停止读入,贪婪性
" T' [% G. k* n$ v- W8 z- E4 p k6 V/ Z5 r W! j3 }5 g* i
2 p; ?" A B" D& S
1. 常见用法。
n) C% ^- J+ Q- A& f9 `$ H6 S5 L# k' a
char buf[512];
; G! l" x# v& J! v" Lsscanf("123456","%s",buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!# h5 E8 Z d- o% U
printf("%s\n",buf);" }! e, ~ T' t0 d) U* N7 O
结果为:123456
0 Y6 e" i+ ^: J$ O2 A8 @2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。+ I8 W, T. U& \) R! w$ q
$ N3 V! \' h$ y7 Isscanf("123456","%4s",buf);
# {! O: J2 e+ g9 G. a3 Aprintf("%s\n",buf);
`& H/ y+ u) n3 C# G5 y* i结果为:12346 D, ?' Z/ v1 ~ Q& A
3. 取到指定字符为止的字符串。如在下例中,取遇到任意小写字母为止的字符串。
7 w; R/ Q. {3 }7 O1 L; }$ @: X5 ^% g$ d- r
sscanf("123456abcdedf","%[^a-z]",buf);
9 n8 |% n4 q' w7 M( Yprintf("%s\n",buf);
8 l* S! S2 a! e, G结果为:123456) F7 q9 W5 Y3 @! ~' K
4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。1 e W) C% j; m o! y1 T
e# ~" K3 J# c6 U6 X8 m
sscanf("123456abcdedfBCDEF","%[1-9a-z]",buf);8 D- ]. v( u' C0 M8 g7 x- b j
printf("%s\n",buf);2 {+ b, C- D& A( u
结果为:123456abcdedf
/ [! L# y9 a4 n+ ~9 z9 q" I6 `当输入: sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf);
+ o% t5 p7 j# e" ?1
U5 j i: C4 t6 N- yprintf("%s\n",buf);
- |* C7 y0 O1 I$ s8 h, `6 Q* c结果为:1234567 D# w; B* @1 ~; \3 G! s4 K. a
5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
2 M0 o* O5 |, i% ]2 b. o
& j3 }* p( E5 T8 p+ r) esscanf("123456abcdedfBCDEF","%[^A-Z]",buf);% X( P0 U) [4 q* Q
printf("%s\n",buf);
& v7 W! Y" F& q; P! U结果为:123456abcdedf# B2 i2 k6 q& X; W, ` \6 x
6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,
& a6 E4 a& `. k/ |% _) S/ l# b先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中4 E* p0 p& M! \4 Q1 Z
, ]3 }; |9 _2 R5 G! h V7 }& }: Xsscanf("iios/12DDWDFF@122","%*[^/]/%[^@]",buf);: O& T) E( d; g- [4 e* L5 e H
printf("%s\n",buf);; \( e) p0 }" D- p- @2 e
结果为:12DDWDFF
! N$ h: Q9 a! _' Q/ [7、给定一个字符串“hello, world”,仅保留world。; W* k; J5 ?8 {
(注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)4 Z! s( S9 {) A0 W# Q4 A
g6 X6 O0 V, u3 v
sscanf(“hello,world”,"%*s%s",buf);* R% ?' L# B7 E1 Q& L1 q/ X+ E
printf("%s\n",buf);# ~' F2 N j6 X1 f4 p4 Z$ I
结果为:world* f2 g2 W, e* n5 M2 w
%*s表示第一个匹配到的%s被过滤掉,即“hello,”被过滤了
& N5 W f9 f. H# {6 V如果没有空格则结果为NULL。
6 N1 c+ h+ U7 K' V, c. I5 o& ]* H: \, q5 v0 r& q
|
|