|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
支持集合操作% ~+ ]6 f J3 Z, Y: J1 U
' n8 ?& L' r: r1 c8 T4 N( u5 d/ a
. @9 i) f5 N+ \%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)
; f* {3 F. e9 b' i+ x$ S%[aB'] 匹配a、B、'中一员,贪婪性
, Q) ?& M$ }' U+ r%[^a] 匹配非a的任意字符,并且停止读入,贪婪性9 ] Q, o2 b |& A N3 _5 n( C
0 k- ?! K! @, ?. f! R
$ g7 o3 u9 I/ Q$ L9 V' H' I3 a# m+ h1. 常见用法。6 n1 l/ z4 F+ X. y- W* c
% W" |: ]) I' Y
char buf[512];
3 u1 o' I3 D$ w/ `. R1 L0 B; Ysscanf("123456","%s",buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!
( n0 t; T( }: ~& E; nprintf("%s\n",buf);
3 j* _; i5 j8 Q7 v+ t% l& X* x结果为:123456/ ~: s s- t! |
2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。/ q4 Y. i$ p* w$ Y2 c" c+ }
2 L6 N+ ^; k/ L& } Jsscanf("123456","%4s",buf);# i, D7 R6 H" x! [+ W
printf("%s\n",buf);0 p6 I& O( }) x- D4 ^: V: ~
结果为:1234
- `9 x2 G4 E9 Z8 p+ \3. 取到指定字符为止的字符串。如在下例中,取遇到任意小写字母为止的字符串。
/ w/ K% R' W% p/ @& q$ _5 V" z7 x3 F8 M% s. X/ Y) ~! e0 {3 C
sscanf("123456abcdedf","%[^a-z]",buf);
3 M w! s+ t0 V) J( I( oprintf("%s\n",buf);
* @6 y- w0 N) k6 b结果为:123456
' Z" g3 G7 [+ b4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。
, c. D8 H: b0 z$ Z( K) P
4 [% e; ]6 m) e. f" v9 [" osscanf("123456abcdedfBCDEF","%[1-9a-z]",buf);+ h5 }' R% ~! V2 {( ]# ^
printf("%s\n",buf);
( C0 }/ P; N( D; \结果为:123456abcdedf J ?& i$ r3 @6 K
当输入: sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf);9 A2 x) G: D; O' C% h
1
3 p3 F; j3 o# b" O8 v1 Lprintf("%s\n",buf);" C! L& {$ _* {2 ~5 H; e% X
结果为:1234569 {1 O0 ^6 n; X; W
5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
: v8 d( Q" R) i. u: B
, j' g" Q( M- d6 Ysscanf("123456abcdedfBCDEF","%[^A-Z]",buf);
V4 `3 ~. n5 `. b: K4 I$ l% yprintf("%s\n",buf);" L7 S) ?: n7 M
结果为:123456abcdedf
2 @/ C, H. i. w6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,
' Q- X8 ]" D" S$ I8 t. c' x, t' y先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中$ K# f# ^5 ` S9 r' y+ r6 T* T# L
4 r7 k8 j* u/ q1 F6 I2 ]- Y8 Rsscanf("iios/12DDWDFF@122","%*[^/]/%[^@]",buf);. A5 d( M8 M) ?1 _8 K
printf("%s\n",buf);! p1 Z5 {8 C4 V K- ?$ X, y# j+ @- f* D
结果为:12DDWDFF( b! s' O' }$ P* Y" W: l
7、给定一个字符串“hello, world”,仅保留world。
8 n; W3 B. R m ~(注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串) s8 G" _# z3 W0 n' D9 d, F
( _/ C) M" l- K" p. p1 T6 H
sscanf(“hello,world”,"%*s%s",buf);, q0 @2 m- L) `( l$ h" h7 k
printf("%s\n",buf);! X& V' g! U0 R+ c1 `
结果为:world$ @4 J) _& K' p- X0 E% \
%*s表示第一个匹配到的%s被过滤掉,即“hello,”被过滤了
% R0 `9 J1 Q8 d3 r8 ?如果没有空格则结果为NULL。
4 P2 z4 v+ T B! y0 `, ?( m! T2 k# p5 S) T. Q1 S8 |& a/ U
|
|