|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
支持集合操作* C" c. x# Y2 E5 F( ^$ s' j
( ~: F: I. Q5 s& _% v
7 f# Q7 w% M: I U6 s%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)
& {3 x2 {" j8 r+ k6 `0 a%[aB'] 匹配a、B、'中一员,贪婪性
' _# h v5 _# I0 y1 D%[^a] 匹配非a的任意字符,并且停止读入,贪婪性
! j( N- h3 E( w0 |8 }
2 T! t& C( g& {( F
- p8 G9 H0 R, v) [# f1. 常见用法。
% @% ^+ j/ T7 U O
: J$ M; T% \. X4 y. ]7 P% Hchar buf[512];
H( O7 v3 o7 ~. f9 @" h( H- ?3 Hsscanf("123456","%s",buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!# x% {# e d2 K, F$ U& l' C0 T
printf("%s\n",buf);
5 D W: `: Y! z. i5 W( p结果为:123456. _9 O9 f u6 G- J
2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。$ S+ d0 ^6 b: S+ }4 _
+ p6 A- y* a `. N" q8 }
sscanf("123456","%4s",buf);' p8 k$ l) q- Z& ]+ [3 v3 Q, j
printf("%s\n",buf);
1 c& I- }6 X. C, O5 L- M9 c& O结果为:12348 v5 [" A' h# D/ k0 {& g" W4 ?
3. 取到指定字符为止的字符串。如在下例中,取遇到任意小写字母为止的字符串。
; l+ w4 H4 d* c! p# r" H+ G. c% ^# i' _) T& s% t6 D' M
sscanf("123456abcdedf","%[^a-z]",buf);9 K$ u: K8 G9 q; D% i% F: }/ I
printf("%s\n",buf);% O9 F% [1 f+ j. R% H( r6 `# |
结果为:123456
: z9 w) _) H5 W' f# s2 V9 n4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。& [) @+ D5 C3 q2 V1 I+ i$ l. {
; E. `2 w) f/ `sscanf("123456abcdedfBCDEF","%[1-9a-z]",buf);
9 N$ P6 a% y# G8 |8 Kprintf("%s\n",buf);1 F4 x2 `1 N' A7 x
结果为:123456abcdedf
4 L4 @) A, ~& b Z0 ~当输入: sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf);* D. J+ H% z6 D( O6 V) R1 X
1
+ d: i2 l6 v3 }# B) mprintf("%s\n",buf);
' ~) c B* f0 l8 t1 H结果为:123456- V4 R' F- ]0 A7 c
5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
; ?2 F* ]6 L$ U ]2 Z* C: ~! f
4 Z+ I5 p. v8 @; Xsscanf("123456abcdedfBCDEF","%[^A-Z]",buf);3 H O4 w# b0 X0 A; H2 p5 `& l$ s
printf("%s\n",buf);3 W) i4 \8 _) [$ N% ?; V! E) K
结果为:123456abcdedf2 v$ n# b5 N0 c6 g3 p
6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串," F8 i# ~' |% @$ f8 X- [
先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中) z* s5 y- \1 g0 Q* _
0 q; w* y, e5 y+ F' [( o
sscanf("iios/12DDWDFF@122","%*[^/]/%[^@]",buf);3 U; I9 ?7 E6 O# _
printf("%s\n",buf);) S9 B$ J8 v- V5 v5 `3 Q! C: @5 l5 E
结果为:12DDWDFF/ {. o+ g$ P+ ` t% n
7、给定一个字符串“hello, world”,仅保留world。
- d+ M$ T- B, R: q C+ y(注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)) r. K5 V( E- w2 _
* N$ X5 G3 T4 D0 A" @/ l5 \" bsscanf(“hello,world”,"%*s%s",buf);
; a. r! q( A$ I9 w2 Fprintf("%s\n",buf);
' ^6 N7 I: g4 i: x* L) i结果为:world5 {( T$ S$ o, ^" [' B
%*s表示第一个匹配到的%s被过滤掉,即“hello,”被过滤了! O) M& z# T: |0 A! c2 B" I& y! C5 Z
如果没有空格则结果为NULL。
: V% E& t! |1 J% }
' V: F- u1 |6 X( J |
|