|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
支持集合操作
& l3 E& O0 n0 z8 Q2 W- k6 d5 g; t& S
9 F" R' S+ Y1 z) h: H3 d%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)$ k I; A3 D3 h5 ?6 A
%[aB'] 匹配a、B、'中一员,贪婪性8 ~* |$ `. k- i. e9 Q
%[^a] 匹配非a的任意字符,并且停止读入,贪婪性
- w4 @: ]. I' J/ ~# p( M: \' N; U8 D o0 j
0 Z" ^- f( W! { b' Y" M
1. 常见用法。
4 p# R' A4 j1 D% x$ @* @- l; |) M
3 j( ?% t- K4 Xchar buf[512];
7 ~' V- ?: R `8 Zsscanf("123456","%s",buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!
" v5 i- z4 I9 bprintf("%s\n",buf);
" t0 u! v3 U, c' a; a0 g结果为:123456% \' Z* m; ]0 h7 \
2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。
8 l3 a/ U5 K$ `3 L9 g
( w- a2 E/ D$ T3 m$ Tsscanf("123456","%4s",buf);8 D6 I( q# T) W5 p! H) y) q
printf("%s\n",buf);/ u, e* \ u V w# D" i. c% S
结果为:1234! J/ D# ~' p- L; R; F2 O2 n
3. 取到指定字符为止的字符串。如在下例中,取遇到任意小写字母为止的字符串。* d4 i% C$ _, t/ @5 I3 k4 Q
. n [+ Y# a: k4 B% T1 Z
sscanf("123456abcdedf","%[^a-z]",buf);1 y/ P8 ?$ |+ C6 N
printf("%s\n",buf);
: p3 |7 v; v4 |. H$ L- L+ _结果为:123456
; j( n9 R2 ~" E+ Z1 p2 {/ E/ j0 m4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。
# z! _3 ^' e5 p3 S, l( q' D# H
sscanf("123456abcdedfBCDEF","%[1-9a-z]",buf);
7 c z" n N2 [9 G' `printf("%s\n",buf);
8 [9 ]4 O2 H' R结果为:123456abcdedf
& Y% ]/ w5 ~8 v( \/ q/ ^当输入: sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf);
) `" s" X" R4 k) G, ]14 y% \4 W- U. e- U. ^
printf("%s\n",buf);
$ {: T6 ?' \% g4 [+ Y: p+ U6 b' F结果为:1234569 R! S6 G: J6 S6 K) a9 r( y) M* S
5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
! L- x, [3 q `0 @4 ^& H6 Z# t4 O! Z0 A' d
sscanf("123456abcdedfBCDEF","%[^A-Z]",buf);) i8 Q; k% z, B5 T+ A5 }7 E
printf("%s\n",buf);, M7 A0 D; _ {$ L+ N
结果为:123456abcdedf
3 V5 Z0 O' n- u% p2 [, F# [% E6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,
4 k% K) D2 Q! W$ v+ Z9 @先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中
8 n- r$ x0 D7 M8 W: C( l2 |" s6 |8 c% ~4 E7 c2 [2 r3 c A2 `
sscanf("iios/12DDWDFF@122","%*[^/]/%[^@]",buf);
: D* L, A& P8 E) _4 `printf("%s\n",buf);
% p- l' @+ C9 y结果为:12DDWDFF' a; E( Z+ w- C I" ~4 e
7、给定一个字符串“hello, world”,仅保留world。
0 u, {6 Y$ d: q9 t(注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)& n% i* l1 L. \& { M
8 A; U7 e$ X, }6 l2 ~6 R7 H3 [( f
sscanf(“hello,world”,"%*s%s",buf);
b; m6 z+ m, b; Dprintf("%s\n",buf);
& `5 w# _1 @. _/ C结果为:world
1 U* Z; C s9 w%*s表示第一个匹配到的%s被过滤掉,即“hello,”被过滤了, p" H: S; T. Z
如果没有空格则结果为NULL。
9 a& A; L1 g, I, U1 V, m5 ^4 I9 P4 U3 n
|
|