|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
支持集合操作
5 M4 t% y! [5 Q3 B U5 ]2 d3 L- d5 r( w
$ O5 k7 d3 y, t2 a) z" ~%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)
" Y& z6 H3 r5 W" x9 C$ N%[aB'] 匹配a、B、'中一员,贪婪性
4 X) |* j/ d% A% @& C%[^a] 匹配非a的任意字符,并且停止读入,贪婪性
- ?/ T- K0 J7 F, r
# g5 V; Z. Z4 _& R0 s- n) B, x: U+ K. n: U! U+ f3 ?. z8 @' B# N
1. 常见用法。
7 b7 @, l1 m- B# e j7 J) a9 Y9 V. g
char buf[512];& O: b' B' F7 y. R. p0 I* u" S
sscanf("123456","%s",buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!4 h( w* r+ a4 ]+ t$ B
printf("%s\n",buf);
7 @1 Z, k! V1 v结果为:123456
0 Y& g: M) H% e2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。 T3 O4 U) I r( w: l8 ]" c/ U8 T
' B, ^& q# J9 n. E2 b$ jsscanf("123456","%4s",buf);
1 P& Y: x% G- }" z7 p( Qprintf("%s\n",buf);
$ G7 f9 M- O8 t( D# C! ?( {2 D结果为:1234
% P0 ?, v7 n; k4 G3. 取到指定字符为止的字符串。如在下例中,取遇到任意小写字母为止的字符串。
3 Q4 r2 L4 Z$ i6 W8 l1 x% a5 {0 R: z0 a. u( M# B
sscanf("123456abcdedf","%[^a-z]",buf);9 Z' G0 \1 O% G& Y; s
printf("%s\n",buf);( w. R9 S+ c1 _& W6 v8 Z
结果为:1234564 `) C% _$ a/ q
4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。
4 o9 ^( o( c: {" T3 Z' n+ x
# T. J, ?, O2 m% ^2 l& Xsscanf("123456abcdedfBCDEF","%[1-9a-z]",buf);
# M; U7 h" I$ b' Uprintf("%s\n",buf);6 i" K# a& |) N5 {% U+ A
结果为:123456abcdedf
- L3 W8 l0 W" a8 B$ f S当输入: sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf);
5 }5 L" F1 T u4 q5 u7 z1
0 F! J2 B! o. N8 `printf("%s\n",buf);0 B' O1 t* s6 ]* g9 h9 c
结果为:123456
+ f" I; B Q! n D; k5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
7 c X- e3 d4 q1 s; ]: J ~- a) a2 {
sscanf("123456abcdedfBCDEF","%[^A-Z]",buf);3 i# ~& W3 u' k/ N, A- ?, F; F
printf("%s\n",buf);; {/ W; p& q @; b% i
结果为:123456abcdedf
+ F: A" K% ^4 O' m" ?* ?6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,
: I y$ }0 s/ r; k6 {& H( A先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中
2 _1 t0 ^$ ?# [. u( E T! P" z7 C8 x, X- }& m4 S: v, v9 V
sscanf("iios/12DDWDFF@122","%*[^/]/%[^@]",buf);; {3 S9 ]! W6 F3 l. ], G
printf("%s\n",buf);
+ b9 c+ Z7 L2 j2 s y3 k结果为:12DDWDFF* Y% T4 O! G; v' r
7、给定一个字符串“hello, world”,仅保留world。9 ]0 L* [) l8 k+ Y2 [, X ?
(注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)
+ V" ]. @5 N; ]: x& ]9 s; }3 I3 p, _( J# e" V4 l
sscanf(“hello,world”,"%*s%s",buf);0 `0 q. z% e" t7 T% F* D
printf("%s\n",buf);
U ]9 O+ X B! Q结果为:world& k8 F2 B9 b# z2 y& E4 W) E
%*s表示第一个匹配到的%s被过滤掉,即“hello,”被过滤了& Z: j- W! s" {8 t7 z# z4 A6 g
如果没有空格则结果为NULL。
! G% Y) W& u' K2 U# v' J- r
9 q7 V# o+ ^0 L6 a3 ?4 N- q |
|