|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
支持集合操作
, V# @' o6 i x& y0 W9 T
b3 M8 V% k" C P9 o M- x7 \* l4 l$ y
%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)
" J- u+ n2 I9 R: l$ z%[aB'] 匹配a、B、'中一员,贪婪性
( d4 _1 b! u3 g+ R( `%[^a] 匹配非a的任意字符,并且停止读入,贪婪性
% M, E+ I- v8 g( r8 z
$ A9 |" M* D: v, [* j2 N% Z+ v, C4 G
1. 常见用法。5 k4 [$ W: q* g) \0 U8 s
|- \& M" v2 t: J2 O$ \char buf[512];
5 C" ~5 X$ x, q0 N, x4 k2 X" Isscanf("123456","%s",buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!
* |; y7 T0 ]. N" R) L* |& kprintf("%s\n",buf);$ P* F M C6 z6 S, P
结果为:123456
9 @; t6 C9 b! x3 J# e4 n5 z2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。
9 G% ~+ I- [' X( k4 O$ w' v" y8 O V- O, U
sscanf("123456","%4s",buf);; }# @) \) F6 S* N4 H0 K6 K
printf("%s\n",buf);5 a' p- j/ `; T( O9 z, u1 E$ @
结果为:1234
) f+ S1 s1 s3 W" E. l* [3. 取到指定字符为止的字符串。如在下例中,取遇到任意小写字母为止的字符串。
( w. f- }' m: K: X
0 V1 @/ H3 |* ]6 ]) ]& W i# W( ^sscanf("123456abcdedf","%[^a-z]",buf);1 B4 B/ j( a+ p' X n. ?
printf("%s\n",buf);
$ m1 D; k$ R: ?1 p6 h结果为:123456& d, l$ M5 ~/ V% T9 y2 F6 X' G5 Z
4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。! x5 w% f" I: h1 X- _" q ]
% n) o0 J# ^6 e+ I; b8 r; k$ Xsscanf("123456abcdedfBCDEF","%[1-9a-z]",buf);
6 M1 Z4 S7 k6 f/ }printf("%s\n",buf);" Z/ j3 |7 ?. u* v
结果为:123456abcdedf; _9 N0 @* X( Z) H$ f3 C- A" i
当输入: sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf); Z( @( L7 t5 L# [7 @( L1 k. _' H
1
4 ?# v; P" _, \+ b" Fprintf("%s\n",buf);
, u( U O- Z1 ^' T4 s结果为:123456" K! I# @) n& {2 ?3 U) k
5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
1 {9 _5 N' g) y) ?
2 [; d7 ^/ Y4 y- y4 n9 T" ]sscanf("123456abcdedfBCDEF","%[^A-Z]",buf);; D7 f9 x8 d" Y
printf("%s\n",buf);9 z5 g( [. A; l- _: T- u9 Q
结果为:123456abcdedf
@# I' c- X; d2 w" G6 u6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,
- w! a y: x; Z% _7 Q先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中
k b. e) P7 x. e
$ j, r: ]8 C8 e8 Ssscanf("iios/12DDWDFF@122","%*[^/]/%[^@]",buf);" S3 Y u/ Z5 o# e
printf("%s\n",buf);
$ b/ D# y' L; g% C- \) ^# h1 R& H结果为:12DDWDFF
6 h& N6 R+ w. q/ D/ m: E8 y+ \7、给定一个字符串“hello, world”,仅保留world。
. d* L3 z9 _4 E8 A(注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)
+ n6 f9 j, a/ V# T/ k! @7 S6 Q) z2 K; J6 \' M! ?$ S8 g# s: y0 j
sscanf(“hello,world”,"%*s%s",buf);
; y1 q) S# ~/ C4 M% y: jprintf("%s\n",buf);
* ~: j& |) ]( E: n结果为:world
- h$ z& X' o/ ^" J( T%*s表示第一个匹配到的%s被过滤掉,即“hello,”被过滤了
8 t* a# F2 S4 s& o如果没有空格则结果为NULL。- R" r5 R7 k/ s0 X
3 V5 y5 |8 c$ \ |
|