|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
支持集合操作
" Z7 t A$ n( U, ?5 C' i: y+ Q ^% W( |" w) c7 Q
5 T+ w" [, C* `4 c
%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)
! A8 O$ ^' h7 u, m7 j# f%[aB'] 匹配a、B、'中一员,贪婪性
0 I* b2 ]3 w1 f5 I6 E. ~%[^a] 匹配非a的任意字符,并且停止读入,贪婪性1 X: ]$ M' l$ E9 Z& _( u) r# {$ }7 e
0 L' D- F \* ]3 n5 V5 D7 F
" v- a f1 ~8 ?1. 常见用法。
" F. a* C8 a4 T& X- {: @
2 n! n5 _7 o. W" p. w! n# q/ rchar buf[512];" G3 O7 P. y: g Q) U7 w
sscanf("123456","%s",buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!8 f7 g3 a( _7 o: m! F j" r
printf("%s\n",buf);" f) n/ k2 k0 ]% t% d, h9 U
结果为:123456% F& k5 x- ^# [+ K3 f0 Y
2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。; g9 I9 U5 W4 V
1 F: ~" V* t' S5 qsscanf("123456","%4s",buf);
% q0 O, u5 N H7 l0 g, H+ B5 U9 rprintf("%s\n",buf);
2 x0 G& A0 f$ i: w% z7 i M3 V/ z结果为:12346 t, J/ I3 v m5 d z
3. 取到指定字符为止的字符串。如在下例中,取遇到任意小写字母为止的字符串。
2 i0 g. o& ~7 v6 J& i' Z7 j+ b# Y, n$ l U
sscanf("123456abcdedf","%[^a-z]",buf);
7 C6 Y' M0 `1 z" d7 Dprintf("%s\n",buf);
; o* z9 _3 q. b% C结果为:123456
! ]# P$ n; b) |. j! d0 X4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。
6 w9 p! E7 |9 v. d0 x6 `8 R% g2 o- D7 G/ m0 }$ ]" n3 n
sscanf("123456abcdedfBCDEF","%[1-9a-z]",buf);
1 h5 {: x+ C) e% I- o; R; vprintf("%s\n",buf);
T& j6 I4 }9 p2 w8 h1 H- A结果为:123456abcdedf
' I/ m, }( `/ {4 D$ }, H6 h当输入: sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf);+ R0 B g F7 I% q7 H$ Z9 F2 j
1
" T. X s8 w: p1 u( I$ `) i: f: Dprintf("%s\n",buf);
2 ^4 ?; g8 M1 }结果为:1234565 Y. o4 C# b2 |3 E
5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
$ {" l \, k8 H# G( M7 {1 n* b; A _6 n8 F8 m; ], R3 v
sscanf("123456abcdedfBCDEF","%[^A-Z]",buf);
( \" A4 W# Q7 d2 G7 Y! x/ u3 Mprintf("%s\n",buf);
V6 ^! I( G3 L2 y/ l( ~结果为:123456abcdedf$ t5 p6 m* X) n5 G! K% S) ^( P3 J4 m
6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,- a8 s" Y% M. O: c" m
先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中6 |# i/ i3 d) S+ b, P- [9 f
. f8 B) c8 f: ?6 {& |
sscanf("iios/12DDWDFF@122","%*[^/]/%[^@]",buf);8 ]7 v" `. B, n5 u* z5 c
printf("%s\n",buf);
: a. J, p. T) G9 ~8 _结果为:12DDWDFF' J' G" I3 \$ e
7、给定一个字符串“hello, world”,仅保留world。7 r2 w+ {* H/ `0 e+ L% E% d
(注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)
4 R+ b- f3 U! |, e: n7 `4 g8 J) y" q
sscanf(“hello,world”,"%*s%s",buf);
$ Z) e$ K" G' }9 D+ e; T2 n- bprintf("%s\n",buf);2 q% N' p) Q7 p' P6 _# t6 j
结果为:world8 `7 H* b) u+ e* M
%*s表示第一个匹配到的%s被过滤掉,即“hello,”被过滤了; j4 }* d4 r4 T- v7 T
如果没有空格则结果为NULL。
Q5 [0 [; ^# m: a8 K, {4 F" O0 U6 B9 o( H b" c
|
|