|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
支持集合操作 C S0 \7 H. v. R* {* L& l- g9 J
" I0 ?/ J, }& T* N
9 P$ v2 R& f* l1 g2 N* w%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)$ O& ~% ?! t# {
%[aB'] 匹配a、B、'中一员,贪婪性 e; @2 W0 Q, H: @: X% ]7 n" t
%[^a] 匹配非a的任意字符,并且停止读入,贪婪性; p% O* k5 r2 I2 { f+ g, ~
$ e0 A, R. D7 F6 i1 j* Q4 w* O7 p8 c4 s
1. 常见用法。' A! d0 k0 T+ j& y6 M3 i2 h
0 L: k( L/ X, h# S- F
char buf[512];
% @! O1 P3 h6 O2 u# Dsscanf("123456","%s",buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!" J' d9 ~0 L6 K
printf("%s\n",buf);- Z' T* q' s/ K8 C
结果为:123456
6 v9 o6 X- F3 o1 X0 p$ }2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。
7 }$ t- r; }7 e0 J$ v4 e$ n3 r/ k& H8 j" I! x7 Z# Q5 E, |
sscanf("123456","%4s",buf);6 {$ E6 J( F- a
printf("%s\n",buf);
% o2 ~- v! E k. R! L结果为:12349 e$ p, G9 K, M1 }& g* x
3. 取到指定字符为止的字符串。如在下例中,取遇到任意小写字母为止的字符串。
' T! w8 }% |2 G9 s: E( p
' U, z7 Z7 q$ f* X* xsscanf("123456abcdedf","%[^a-z]",buf);
3 X# I3 F' e8 c& ]2 |printf("%s\n",buf);
) o* N. ? w3 C( V* `7 s结果为:123456
6 W: z1 {3 t% L X( _! X4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。0 C, J( T& a! m9 Y; S
& E2 M* B6 V d; a, ssscanf("123456abcdedfBCDEF","%[1-9a-z]",buf);
$ F& K6 \+ v) ^4 @) hprintf("%s\n",buf);
' F( e/ `4 r+ l+ I8 V5 z结果为:123456abcdedf& `, r& G4 B, e, Y1 P
当输入: sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf);5 ]( Q" m% G8 \5 o* F
1
0 k6 I9 ~: @ y; N: L4 I# D" }printf("%s\n",buf);: w, f t5 K) |
结果为:123456! W) {" l; z! u/ E4 F, i0 `! ^
5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。0 h4 } @% O- A7 U4 T
/ Z7 S# p3 \4 \* T% h! F) R8 Xsscanf("123456abcdedfBCDEF","%[^A-Z]",buf);- b. R5 h7 j. M$ V- M
printf("%s\n",buf);
2 @- J" E! x2 g) n: J# e) }结果为:123456abcdedf
6 m! p n! P- F7 |$ G6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,# F& o# j% t& T8 z r1 ?# s
先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中
, i6 {+ y0 k; b. a% ]) Q5 Q
0 o: z/ w' a% y" J) H; fsscanf("iios/12DDWDFF@122","%*[^/]/%[^@]",buf);+ k) _% O7 a# _6 v& @- ~8 ?
printf("%s\n",buf);% S% z4 t f t* l* U
结果为:12DDWDFF$ a2 J" n! [1 `: F8 `( x* n
7、给定一个字符串“hello, world”,仅保留world。 ^5 R3 X" j5 b7 C- u6 ]
(注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)
- {/ f/ }9 f- ? g O" S9 h' j. X6 k$ k; V2 j% s) f& A8 i
sscanf(“hello,world”,"%*s%s",buf);
( u: \% A- |3 H# K8 v* Nprintf("%s\n",buf);
7 [" {4 y- o& H& _- A结果为:world
# `% V! b' I6 w. W. X; L%*s表示第一个匹配到的%s被过滤掉,即“hello,”被过滤了
! [4 t. R( |! G; L" A; ^2 M如果没有空格则结果为NULL。
% Q0 F7 y$ z, b( `+ O
K- P! }) s" J2 k( L |
|