|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
支持集合操作
* I. z) B& C4 b# ]- F. [% h, V! @) j4 u
) Y& X7 g/ g, [
%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)+ W0 D) _; [7 a, ~6 U3 [ Y
%[aB'] 匹配a、B、'中一员,贪婪性: G/ N4 W* ]# k) [
%[^a] 匹配非a的任意字符,并且停止读入,贪婪性& N3 Q2 O6 [% d
! {$ O1 E0 Q- H
8 y q- O' t' N0 K
1. 常见用法。
" N( Y7 M2 \. {. C: g
0 Q6 h4 m' w5 r" ]3 Wchar buf[512]; \+ O* `6 R+ J3 Y3 b5 u
sscanf("123456","%s",buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!- e) ]1 [4 t3 W; A
printf("%s\n",buf);) t9 [3 k) w. @% {! h
结果为:123456
; f$ u" m# T' x) s2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。& M$ C, W2 Z9 `" }+ [; }8 j; g
$ x; Q$ z- a9 z( {$ h
sscanf("123456","%4s",buf);* H1 S: m$ `. S' }4 h: d9 Q7 W) Q
printf("%s\n",buf);0 G4 ]1 G& m1 P8 m7 Q
结果为:1234! }+ P9 o D2 `$ Q/ e) b
3. 取到指定字符为止的字符串。如在下例中,取遇到任意小写字母为止的字符串。+ }7 H6 Z% _- u! @8 Y: I
. y7 F7 v( \2 Z3 s
sscanf("123456abcdedf","%[^a-z]",buf);
. {$ {0 g( o/ T8 N9 {* a- V, Nprintf("%s\n",buf);
* G9 ?# { G6 ~ g9 D7 i结果为:123456
; s" v0 p& {( [; U- c$ K# \4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。
% S; X: t/ q; M' [4 t7 S, l- r. M% H1 k" [3 I1 T/ ^
sscanf("123456abcdedfBCDEF","%[1-9a-z]",buf);
3 J% c6 z, e7 ]8 p% bprintf("%s\n",buf);
+ A: E5 \, C& g/ p. B* S! }" F结果为:123456abcdedf' g. P, @' A. |0 @% _2 N
当输入: sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf);( E: ?+ g. A0 d) h! H0 E. q
1
- z* P4 E7 g5 {9 T0 Pprintf("%s\n",buf);& f |$ W/ ~- G! l V. ^% S- r
结果为:123456$ T+ Y9 q# i) J
5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
) x( x9 |" m# L6 K: D/ w( t" L0 h* K4 i4 b# ?7 y& U" P3 h- h* k
sscanf("123456abcdedfBCDEF","%[^A-Z]",buf);
7 L9 |! o9 Z1 a% _( w. tprintf("%s\n",buf);8 V& l& {8 q- [2 D# I. V
结果为:123456abcdedf
$ L [5 g7 b* q q. }6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,. m- A Z. I! l8 Z
先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中: G( p6 D: Z9 E7 e# f7 v: q/ n; J
: } m. D5 |; i. d/ n. a8 fsscanf("iios/12DDWDFF@122","%*[^/]/%[^@]",buf);
' T3 v5 Z3 V; \( _$ i% F* t+ ~printf("%s\n",buf);
5 e7 P1 M4 D, U5 M0 }* g结果为:12DDWDFF. R# e: ~ x2 l! m0 |$ l G
7、给定一个字符串“hello, world”,仅保留world。" A* G4 _* s6 N! J E
(注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串): k- U4 d( K6 [' ^; K
! E- i3 @- c- m1 ^sscanf(“hello,world”,"%*s%s",buf);
8 z3 g8 h( m0 _7 Yprintf("%s\n",buf);7 L; D2 o. |. i }7 D3 z( P
结果为:world1 ?7 V+ \) @6 d2 l3 `, Q2 p
%*s表示第一个匹配到的%s被过滤掉,即“hello,”被过滤了
& m( i% ~, _; F如果没有空格则结果为NULL。( h- J' G9 {6 r6 c, D J1 n
* g* n) _# m+ B6 O8 ^2 D |
|