|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
支持集合操作
4 b1 Y4 q' b* \, ?3 ~, V0 p+ k1 r7 V9 F( a+ d6 l3 c
% j N2 ?$ Y B( U) |- D%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)
+ h: L' v* j/ Z+ Z- v%[aB'] 匹配a、B、'中一员,贪婪性
: j; _ L8 N0 n! G%[^a] 匹配非a的任意字符,并且停止读入,贪婪性
- _/ _' ^) u$ B9 B2 |4 z
, U; q) F1 ]* a9 q; j; f. `( Z$ ]( ?8 s# D3 L- U. K0 I
1. 常见用法。0 }$ _! u; V8 v1 c3 b: U7 q$ {
* g2 F* f/ \6 Y% w" z1 Wchar buf[512];
! x' M: f t9 z) n4 Asscanf("123456","%s",buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!( c1 p( E: g6 ^
printf("%s\n",buf);
8 w+ U. j- ~. U, j结果为:123456. ~7 f! J2 L5 o; X, V" u; P
2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。) q2 y9 G p* d8 H6 {/ C0 Z9 _& {
; ^: A5 V# F$ Q6 b
sscanf("123456","%4s",buf);
9 `, X4 \6 q& X: d; D6 R1 ?6 B) Eprintf("%s\n",buf);
8 \5 U0 g( x$ |8 l结果为:1234
! @: [. g( n: e. S/ k8 f# F3. 取到指定字符为止的字符串。如在下例中,取遇到任意小写字母为止的字符串。
9 P. S+ F: Q* @8 {0 ~5 k# d* e' S. p
sscanf("123456abcdedf","%[^a-z]",buf);
9 G7 A5 ?7 O) e5 k* B3 C" Gprintf("%s\n",buf);
( G0 V" \( h, E9 N1 b0 C' f结果为:123456" Z8 }; F$ R9 q# {& {7 O: p
4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。( f1 \2 G6 {9 J$ J7 ^+ a9 _
_; L o- f0 t$ R9 z; ]sscanf("123456abcdedfBCDEF","%[1-9a-z]",buf);7 G2 x" B1 a5 q, V0 s
printf("%s\n",buf);: l B% o7 J4 u2 Y. F( F
结果为:123456abcdedf. z0 F- L9 \" z- V3 ?
当输入: sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf);
% W! x2 b# ~- n7 \: j/ ^1
$ `0 O0 E9 `, V+ v k1 M1 @printf("%s\n",buf);
) M& M% h2 n" \结果为:123456
' M7 l( o. o+ l$ a) f; V6 {: I5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。& i7 k; M5 x8 M/ m# f- v \% d
: ], _7 Z. V* Z9 Y: Y
sscanf("123456abcdedfBCDEF","%[^A-Z]",buf);
, v6 [& v! I8 {# h* Pprintf("%s\n",buf);9 s. a+ \1 e- u) }) t
结果为:123456abcdedf5 ?' D. L+ F# t" w, E' y" S
6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,
0 q" T- Y* p$ B( ^3 T+ b先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中
+ E1 ?: d! v( m( L$ d
; b% D5 M3 G, A1 zsscanf("iios/12DDWDFF@122","%*[^/]/%[^@]",buf);
1 g3 s9 h: t4 w* X1 m9 }9 Qprintf("%s\n",buf);
" g- L4 r X+ m2 g结果为:12DDWDFF
8 b0 s# S# g/ ]9 T8 R7、给定一个字符串“hello, world”,仅保留world。
9 g1 R: Y4 y8 J D2 A* p+ j(注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)
7 w3 Z8 v8 R1 u* ^4 Y& a
4 G8 E' G! e5 m1 ?8 A$ g$ _sscanf(“hello,world”,"%*s%s",buf);
: ]# E$ p2 n3 sprintf("%s\n",buf);) t: i9 _ F* d5 c k
结果为:world; L$ ]+ s3 g. z3 [/ L" A/ I
%*s表示第一个匹配到的%s被过滤掉,即“hello,”被过滤了
8 f s8 X- ]& a7 x3 M! N如果没有空格则结果为NULL。' t+ G9 V7 B R0 w
9 h( o' T0 Z. u! d- F: E |
|