|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
支持集合操作
/ w& u$ d+ x/ B( K3 S1 O* R+ v# Z
' t, ~+ P) p" Q& Y, Q' ^- m' v& E
%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)
' O. l* L8 t2 p6 d4 J# D%[aB'] 匹配a、B、'中一员,贪婪性5 x8 O2 K& Y- u, \
%[^a] 匹配非a的任意字符,并且停止读入,贪婪性0 N- f/ ?+ C5 @
& R- G1 Y8 b4 N* @( `* c$ b+ x. C% z$ H A
1. 常见用法。
1 C3 q8 O( ^! o7 `) ]- V* t4 O4 I6 }. z, X+ I; t1 U' [
char buf[512];* |! s% D4 `( O% e
sscanf("123456","%s",buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!
! X7 O- H1 N; i0 b5 l Pprintf("%s\n",buf);
H q- |" Q2 C0 z6 c结果为:123456
6 w, Z3 R' k: K2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。
, `; m$ K( u: _, m' u5 X, x0 {# v. P1 l7 _
sscanf("123456","%4s",buf);- w2 H. K& t0 x) [+ f
printf("%s\n",buf);
8 k2 d2 P4 _4 Y6 U. [4 d结果为:1234
9 D1 d* Z/ U2 N3. 取到指定字符为止的字符串。如在下例中,取遇到任意小写字母为止的字符串。
% B2 ~& L$ c# A" ]8 b1 e$ C. i- p( H, k! T% h
sscanf("123456abcdedf","%[^a-z]",buf);
* {6 q9 t. } U, b+ g# v7 l& l) Z, \' kprintf("%s\n",buf);
, I' @1 o3 |, M: v0 y5 g结果为:123456
* G! L( u9 z1 T+ j0 E4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。& p8 M S; Y$ K1 V, w7 g- d' J/ v
2 M: X! ^% h, _5 t
sscanf("123456abcdedfBCDEF","%[1-9a-z]",buf);: w' D. S$ t8 G+ F
printf("%s\n",buf);
+ Q' Y' l6 o6 e' S: B结果为:123456abcdedf
. i& Y) o6 Q. s% n当输入: sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf);
; T4 y% ], J& h8 }' Z6 D! n y7 I1
# b r( B9 v% ~/ j2 L+ N7 p6 d* f* Fprintf("%s\n",buf);& y3 R8 i0 |& Q3 ]& h
结果为:1234566 A( o" l' V, X# g+ D; u! [" ~
5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
3 k2 ~; Q+ F( S* K4 b- g5 I% x8 D- ~7 m) |
sscanf("123456abcdedfBCDEF","%[^A-Z]",buf);7 u# O7 l$ |+ @4 g1 ~
printf("%s\n",buf);2 j; ]: i2 S( W6 D
结果为:123456abcdedf
5 n* }; b2 C: ?6 n$ L( b; u1 E5 c6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,
' }$ ~3 F6 }* S' {先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中0 E" w/ {. y- ~8 O" G8 U1 o
$ v; w/ s3 ?# U- |, E- Qsscanf("iios/12DDWDFF@122","%*[^/]/%[^@]",buf);
) {& F5 N4 C$ w/ r @1 oprintf("%s\n",buf);
# A+ q$ O" q G7 o- M1 j结果为:12DDWDFF
( i r, h1 h- z0 j) Y. N9 |# y- s! w7、给定一个字符串“hello, world”,仅保留world。
' F1 ], n1 O5 J1 Z* o+ `8 o F(注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)
: [; ^& x5 |2 J1 B# p! C1 S. B0 j4 m0 Q; B! ~) B5 v- \6 I
sscanf(“hello,world”,"%*s%s",buf);$ p5 V, a3 \9 p6 H/ ^ J
printf("%s\n",buf);$ K' y+ Y0 K. W# t3 \; m! j1 z
结果为:world
4 ~. s. a1 X! I b%*s表示第一个匹配到的%s被过滤掉,即“hello,”被过滤了
$ k7 [+ u* Z. Y: r' _# v3 d如果没有空格则结果为NULL。" P- ~6 t" G$ L- s$ A$ s. k; |/ _% o
! {9 V9 y: m Z$ n5 j+ l) P |
|