|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
支持集合操作
* v7 I4 v0 b6 ~! v, F
% V! U3 z) j& N: n( r7 n2 Y0 u0 W1 l7 {
%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)4 a- f) E, `( V: t+ W
%[aB'] 匹配a、B、'中一员,贪婪性, p4 Z5 A2 @5 G0 p8 W3 \
%[^a] 匹配非a的任意字符,并且停止读入,贪婪性
3 }4 c4 {) Y3 A- h' ~3 }! _4 c( L) F4 J' D
- ^5 q2 u* G; A2 l, ]% y1. 常见用法。
/ `% k8 {, a* Y: D3 h4 a& x" |
8 B/ v; c! ?0 f- n5 A+ H$ t$ M1 Lchar buf[512];1 ]6 J o' Y9 a; t& a5 u
sscanf("123456","%s",buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!
3 I3 r. @4 t6 k' H8 T) L, iprintf("%s\n",buf);7 b }. F$ N) M+ }/ V8 f5 T% s. `7 i2 B
结果为:123456% F& h$ k0 o$ j/ z U$ s
2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。
8 t, c9 e0 k* H6 G. w/ j; S( R" u1 q0 K+ [3 r" K4 k% Z
sscanf("123456","%4s",buf);1 v3 d- R) Y) t; b( J- z
printf("%s\n",buf);+ u- w, H/ N# Z4 I+ O
结果为:12346 W' c3 W3 ]. {; G/ W1 K2 q
3. 取到指定字符为止的字符串。如在下例中,取遇到任意小写字母为止的字符串。" \$ C) }) \$ J- t9 Z
# Q6 u7 d7 H$ ` o" E5 w) R2 {% F
sscanf("123456abcdedf","%[^a-z]",buf);
/ j" H: f6 ~4 T, v0 k8 w6 Vprintf("%s\n",buf);
2 k b2 p( N/ Y0 [1 G结果为:123456
/ A# d( R; T9 G4 f- Z v$ B4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。3 t2 e$ S6 ~2 k1 x
+ s8 J9 I$ c8 {% S
sscanf("123456abcdedfBCDEF","%[1-9a-z]",buf);
; {* L4 G5 ~' n6 o' eprintf("%s\n",buf);# b' `4 p0 s0 ?# F1 p/ f
结果为:123456abcdedf( K$ e0 I0 K) G0 ^2 q
当输入: sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf);
9 h! a8 t% ?, z2 u: _$ a1
& U, ~; B& N/ z1 a. R% nprintf("%s\n",buf);) q# T4 E0 f0 H- \
结果为:123456+ |& K" Z+ y" S4 p9 }2 {. L! h
5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
8 I) Z5 X; O0 f6 X$ j+ s
4 T' G! G, ~- msscanf("123456abcdedfBCDEF","%[^A-Z]",buf);
% @' ?' M H: [# `! b2 Aprintf("%s\n",buf);
- c# g* [& _2 i# n结果为:123456abcdedf
0 v9 E: h1 Y" U7 t! C+ L6 X3 O6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,
% x5 B( K/ G" _/ S0 T9 W' K# j1 F先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中3 ]( V( H: p: W
7 x: z2 k! v# P
sscanf("iios/12DDWDFF@122","%*[^/]/%[^@]",buf);
0 p% G9 ]) F; i# Xprintf("%s\n",buf);
, {: u8 z5 `! K7 W' N结果为:12DDWDFF
( U- _4 v" a7 D# j W/ Z! N9 B7、给定一个字符串“hello, world”,仅保留world。6 |- B+ w6 [ F) b/ ]' @7 S
(注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)
% m: h1 n v5 m, X8 n% O3 M! c9 \0 r& R! x( A6 q
sscanf(“hello,world”,"%*s%s",buf);4 y' P) G( h/ c, o: R+ S
printf("%s\n",buf);
p* R; b/ w$ I( G结果为:world
! \- o8 q$ U8 O4 }%*s表示第一个匹配到的%s被过滤掉,即“hello,”被过滤了4 J" u/ n w3 n+ l8 c) ~& _! g
如果没有空格则结果为NULL。
0 M) m+ x {$ e, {' ^
" e9 k/ F" B- \9 R0 ]# ^3 | |
|