|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
支持集合操作* E6 R0 z4 b8 ^( C# P+ L# D7 a/ K
0 _" z; s6 L2 I
: I' `3 R3 Z W- m" p& P: y%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)1 d& u& e/ `) U5 B0 @9 z
%[aB'] 匹配a、B、'中一员,贪婪性# A: O: E" \) T
%[^a] 匹配非a的任意字符,并且停止读入,贪婪性6 H& F6 v( a' v3 A- e* Q( O( N) G
) @1 [1 G0 z+ C9 m. _4 |* D0 C/ t H! z6 e, T) r. J, m3 N5 u" j
1. 常见用法。; _3 |% @: e! ~1 l
/ e! l/ y+ G |" }: P) `
char buf[512];) _ p4 C- G9 w4 V P/ ~; K
sscanf("123456","%s",buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!: w8 _# |9 k9 B3 U6 D% p
printf("%s\n",buf);
" o( R3 l! ]# Y2 i/ `( W c& l; e结果为:123456
, B4 Q- B" ^1 }6 m3 E9 f. j2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。
7 y9 Q% s- q* H# |: ]. k' \
0 [! N: T" ^& d3 W3 }2 b4 Nsscanf("123456","%4s",buf);! W# O7 @0 a8 _" w
printf("%s\n",buf);
. {# i) V/ r3 M- z结果为:1234
6 m8 W% U8 A& J1 P$ \3. 取到指定字符为止的字符串。如在下例中,取遇到任意小写字母为止的字符串。' o1 t) h: m6 H8 a& f- i, g8 X% R
! u6 L+ C" [2 n1 f% ]" |, ksscanf("123456abcdedf","%[^a-z]",buf); t6 a1 n% y9 T( k" e! c2 }
printf("%s\n",buf);! `4 x2 Y( M) P4 O+ @
结果为:123456. F g4 E3 a( A, p: E% O
4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。7 _$ \% G: l" Y! P( Q( x$ C l/ B
2 ^1 [. ]2 s1 Asscanf("123456abcdedfBCDEF","%[1-9a-z]",buf);" R* A: |. u# J
printf("%s\n",buf);& [" B/ \6 U" B* u
结果为:123456abcdedf' ?' F; V" u- R& `: t! p z
当输入: sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf);$ j0 b. i/ I; M$ i
1
( M s4 W- x$ [& I. g, Lprintf("%s\n",buf);
3 H, ^6 b& |: [! n结果为:123456' T$ M" G! a. x1 \ p) R
5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。* l3 Q! N0 n1 `& _& y
9 m( C, U+ |# e r' N$ `
sscanf("123456abcdedfBCDEF","%[^A-Z]",buf); U# b3 U' ~/ i1 ~4 n
printf("%s\n",buf);0 T- C+ \+ n: y, G w. K
结果为:123456abcdedf$ @7 C/ C$ k) b W$ s7 U
6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,- r4 X9 w) ?1 j: _1 h* c
先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中' k$ j4 Q% b: r8 g/ P {
+ `4 u& A4 I6 b* a
sscanf("iios/12DDWDFF@122","%*[^/]/%[^@]",buf);
) u4 s8 _; v6 q+ \+ \printf("%s\n",buf);
* j% n6 {2 u* V结果为:12DDWDFF
2 W; U) L+ s2 k% _7、给定一个字符串“hello, world”,仅保留world。
Z, ?1 r( V7 O* R4 U(注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)2 [ E& w5 _$ _$ ?" i7 N
& D5 `# F/ K/ C- w3 A
sscanf(“hello,world”,"%*s%s",buf);6 f+ w! `1 f3 T
printf("%s\n",buf);
V- G Y5 Z% g6 y8 Y4 D4 i结果为:world
+ P: r8 _5 ]" g3 a( C+ m%*s表示第一个匹配到的%s被过滤掉,即“hello,”被过滤了
+ b, B/ g2 e5 ]1 D如果没有空格则结果为NULL。 B& J {/ M1 g5 F
2 U# n+ n; M0 ]7 K q1 [+ U
|
|