|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
支持集合操作
. Z0 K; O- P$ h$ K$ X! [3 w$ _$ _7 H F7 o0 r% Q
3 w6 q! h. Q. T: y! d7 K( Y
%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)
5 t6 P( W8 O2 [: Y%[aB'] 匹配a、B、'中一员,贪婪性! u/ l2 k) k* f( n9 l+ c
%[^a] 匹配非a的任意字符,并且停止读入,贪婪性
0 U- O" P# A" e! [: R2 q; ^7 }5 ]% Y& B1 s8 U
4 q! e+ e: Z5 D% h
1. 常见用法。. G7 N/ _" r n& e; k+ c
. s" c K' N" [
char buf[512];7 H) K" @: q& w4 g7 b# d$ a
sscanf("123456","%s",buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!
/ W" G |4 Q1 `5 n) t- }printf("%s\n",buf);
* ^' u& M2 b1 j结果为:123456
# M- S9 V& `& C3 H. i% _. f1 [: I4 z; H2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。0 Z5 F5 g X+ f2 j! l: f) t
) O/ ?! s8 Z! w. M( ksscanf("123456","%4s",buf);, }# c8 U8 _; Y9 z# t
printf("%s\n",buf);
& G1 O+ y+ f5 Z& b8 ?5 _0 ^结果为:12344 I3 D! n8 J0 ~. d8 _: l# _
3. 取到指定字符为止的字符串。如在下例中,取遇到任意小写字母为止的字符串。6 K9 [# L7 y! k0 v- X
4 m) x5 r; _$ _5 J. g& [
sscanf("123456abcdedf","%[^a-z]",buf);
) A- Y" q8 r# ]. ^! V0 jprintf("%s\n",buf);* F1 O! @) u4 |, z" Y
结果为:123456
* _- g/ [- `8 r6 Q2 O4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。
* B. C! y( m, e, f. ^7 E! v
) \: n5 J. U$ R8 x" qsscanf("123456abcdedfBCDEF","%[1-9a-z]",buf);) S, o8 D! B. X7 \
printf("%s\n",buf);
7 j) O; U+ L" u! @结果为:123456abcdedf( h+ o7 `2 x, s, D0 u: g4 o1 g
当输入: sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf); G4 `" j* N3 R. J# _
10 H y% l$ K8 H! B
printf("%s\n",buf);
: {2 N ?' }% {7 G6 R' b' ~/ s! B& q结果为:123456$ q: i6 @6 k" C l9 d# l! y% O
5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
; F3 B8 P8 i& U" Y l& h1 h( N; S; e2 z# t
sscanf("123456abcdedfBCDEF","%[^A-Z]",buf);3 g. u2 I% W5 a6 ~" `/ P5 c& _
printf("%s\n",buf);- B: v* m5 H/ t. W
结果为:123456abcdedf2 L5 D, _9 S& ]1 C2 w# c' [! s
6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,
, q8 ]1 ?9 S: G+ Y2 V先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中4 Z C7 p& L/ X- y0 `
0 [' J+ U O' i- \0 h
sscanf("iios/12DDWDFF@122","%*[^/]/%[^@]",buf);
3 r9 U0 S$ W+ w& e- Sprintf("%s\n",buf);( [, A0 E) V9 W' P/ ^" {
结果为:12DDWDFF8 @ D7 S2 r" {5 O' ]) Z- M
7、给定一个字符串“hello, world”,仅保留world。# o: E" [7 X: z# {
(注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)
" y( V: M% O, A8 s4 u Z; @. i! U) j# N
sscanf(“hello,world”,"%*s%s",buf);; d( k$ {' ]6 F' T8 e7 ]
printf("%s\n",buf);5 ^1 x: k. k# q! y) q
结果为:world7 O, _) Q) l; k, _( Q$ |
%*s表示第一个匹配到的%s被过滤掉,即“hello,”被过滤了! V( c7 T. Z; W2 J3 Q: X
如果没有空格则结果为NULL。
! |5 T6 L/ |) `& R
9 ]' ^ @% p* X( G) Y |
|