|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
支持集合操作
0 Q/ n" B0 s, x1 r1 T& V
- e6 [5 ~" p. i' ]
5 u. D; ^; z; D5 _: U%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)
0 H; {7 L" g* \%[aB'] 匹配a、B、'中一员,贪婪性& n: o% K- a$ X% L: F. t
%[^a] 匹配非a的任意字符,并且停止读入,贪婪性$ N% p! f1 y# p
2 Q( }4 m* \" Y2 s. }
5 ]. h [9 p+ d- Z+ G1. 常见用法。
7 Q0 D, D. q5 W- W2 K9 X1 N- W% B$ t7 N, Z
char buf[512];1 _6 @* z) n) n! \, ?+ {+ V$ r
sscanf("123456","%s",buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!4 ]+ d2 t: k' q* {9 O) g
printf("%s\n",buf);2 A) y/ H# G; o% s6 q
结果为:1234561 X: B- x9 P& g: ]0 k$ G ~) Z
2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。# [! ?* u2 F# _" L0 Z0 |
$ b2 M( B6 }6 v7 n1 k5 v
sscanf("123456","%4s",buf);
! K4 p, X2 \0 `8 J- |( {/ C0 yprintf("%s\n",buf);
/ A, u3 c) L+ p5 l8 T结果为:1234: i" D3 C' t8 W3 O
3. 取到指定字符为止的字符串。如在下例中,取遇到任意小写字母为止的字符串。: Z( Y- h1 ~0 O. i
' v/ J0 ^# d+ P9 esscanf("123456abcdedf","%[^a-z]",buf);& l6 \/ M. F4 t5 o, a
printf("%s\n",buf);6 f4 t1 q7 m+ a6 e
结果为:1234561 C; _" _7 N4 i6 ` S9 ]
4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。
3 X. x$ S: k5 z* h8 ?9 I$ k0 f, m2 Y8 H
sscanf("123456abcdedfBCDEF","%[1-9a-z]",buf);2 [% t+ ~' q, m d
printf("%s\n",buf);
( D4 }3 j5 E0 Y3 O- \) g- v! }结果为:123456abcdedf- `# Z+ w) u/ s" B
当输入: sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf);, ?- b: w8 X& a1 i, Y( k( s6 h
1
, ^3 ?. r' c, a; n* o% oprintf("%s\n",buf);
5 {) a% H: o9 @结果为:1234567 m5 F. z( Z6 [% _8 U( _4 `
5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
$ M/ O& c. t0 {8 C8 w0 W- t7 I9 l3 i+ Y- J Y9 a* h9 b4 i! b8 ~
sscanf("123456abcdedfBCDEF","%[^A-Z]",buf);
, F* U9 V. V( R) V, `* {printf("%s\n",buf);
0 N |! d% D/ V4 G: X6 {结果为:123456abcdedf& H# q$ h% Z. q! O$ d% l; V; T
6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,
U$ O4 L' O. d) d' X先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中: r3 G3 q1 Z/ g" I1 }' W
* k) Y, M6 l- B _& g Psscanf("iios/12DDWDFF@122","%*[^/]/%[^@]",buf);& L7 j6 p8 p. [, y6 T' d* {. t. k
printf("%s\n",buf);
" h) k. [2 b' `& a8 ~结果为:12DDWDFF3 r, }. F' I: M. W$ e( e2 B9 ~
7、给定一个字符串“hello, world”,仅保留world。$ n. ]. n' z* [( Z3 n* N
(注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)% _8 g. s1 m$ Z$ r9 U1 c
9 V" Q5 B' f3 _7 i esscanf(“hello,world”,"%*s%s",buf);
8 o; b Y3 m, h6 |2 M1 Uprintf("%s\n",buf);
8 h+ c) X+ Y- |+ |* L结果为:world
5 C( i, O0 w+ k* J; A%*s表示第一个匹配到的%s被过滤掉,即“hello,”被过滤了/ d* ~! V# n5 G, @% I
如果没有空格则结果为NULL。. H" |6 w: F6 m4 _) P, y
- Y( N t0 \% r3 s
|
|