|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
×
支持集合操作" [3 t& B$ R4 l' n. b
7 W. c" n; O" ]5 w8 T9 a/ n, a2 V7 K( y! o: O9 {
%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)
/ p8 \4 W$ ~. J4 e4 C) s! E%[aB'] 匹配a、B、'中一员,贪婪性6 J1 v. J* W. |. T
%[^a] 匹配非a的任意字符,并且停止读入,贪婪性7 _! k( y0 \) d4 u
+ o- ^5 F6 M+ {( x
2 i0 u( m( d* t; V
1. 常见用法。: \; J% t, F) t
g9 p h) N8 s# K
char buf[512];# m: o0 @4 i( _6 q* t& \$ k1 d
sscanf("123456","%s",buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!3 o% t; D7 Y4 N" u
printf("%s\n",buf);/ r {- A- \/ U. L: y0 H; g* @
结果为:123456" d, n3 |' V9 X n
2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。
# U. r* J" }: ?% U/ d: K
4 }$ W* f3 M( C h/ tsscanf("123456","%4s",buf);* C1 ]# Z5 q+ E& v* }
printf("%s\n",buf);
1 x: l7 L6 `5 N6 h7 P6 e结果为:1234& c5 S0 P Z. z { } y. I
3. 取到指定字符为止的字符串。如在下例中,取遇到任意小写字母为止的字符串。
: f/ a. I2 D% v# r
# j* D! E$ d. C& W$ J0 g! x' b% Usscanf("123456abcdedf","%[^a-z]",buf);
2 P3 U# x: Y! r; Wprintf("%s\n",buf);
2 V0 j0 Z( r, J4 T$ n结果为:123456& T7 k8 K2 s5 \+ T
4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。
" q/ P1 D3 m$ v
; r" Y) I5 a& { @. H$ p& ?2 s* d0 Dsscanf("123456abcdedfBCDEF","%[1-9a-z]",buf);
2 O' ^9 Y' | J6 I+ o+ D3 kprintf("%s\n",buf);# |5 V3 D+ g9 y1 f; s
结果为:123456abcdedf8 q/ B4 }" `! Q/ Y, [* C3 _
当输入: sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf);
) y" i! I8 t, t! r1 ^% x' @8 t1. ~' T4 S4 n0 [" L- V& }9 S
printf("%s\n",buf);; D5 ?. ?* P Z& B! H4 p+ K
结果为:123456
* K9 }+ t2 G& ~ A# v- x5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。/ X- j' \9 k- Z5 E2 y4 |6 ]4 @
1 \$ D+ L8 n& a- U3 s3 h! B
sscanf("123456abcdedfBCDEF","%[^A-Z]",buf);& q! S) H/ V. q: R* w+ k0 `7 y i
printf("%s\n",buf);- w, X: A2 t8 X* R C
结果为:123456abcdedf8 S6 o0 S1 z' k3 x( n
6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,
3 _ ^1 r2 J( B- D1 g先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中, j) U% [8 R: A, w
, b: W5 a) x/ T3 w
sscanf("iios/12DDWDFF@122","%*[^/]/%[^@]",buf);+ x! I _+ F, U- X% l& ]
printf("%s\n",buf);% H9 E; w! d+ \! w$ ?+ I) U
结果为:12DDWDFF- z' G: m @- b. o$ y% R
7、给定一个字符串“hello, world”,仅保留world。
* o$ ^* a( B0 g0 R. Z! W(注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)7 W5 K( B* H0 C/ y
, b' }2 Q P7 `1 x' Y
sscanf(“hello,world”,"%*s%s",buf);
9 f" M4 E) H7 x8 P: `. B# fprintf("%s\n",buf);
: B) \. Q0 f& x+ }2 i$ n结果为:world
% X! R9 d/ }. n$ `$ I( J%*s表示第一个匹配到的%s被过滤掉,即“hello,”被过滤了
; c0 S% | o4 l( w如果没有空格则结果为NULL。! x- _5 t* f& l' I6 c
8 O1 |5 ?+ K0 t9 {4 t i6 \ L' l |
|