|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
支持集合操作
) Z/ V7 W: E" Z+ o t7 O" V" b5 }. Q' @( J' g$ X# ]
( M* p+ i/ g' o% P, K& C
%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)
8 ?" U: j7 g# I( A( h+ e%[aB'] 匹配a、B、'中一员,贪婪性
0 Y* q7 @) w0 H" e* J9 i7 u%[^a] 匹配非a的任意字符,并且停止读入,贪婪性( }6 b8 W1 S' W) U+ a; [+ P& [
7 {0 i$ L5 N) W4 d( e
; C- [# a+ e$ J9 _. A7 }1. 常见用法。
3 Y _) [2 i1 K7 D0 M6 a0 R6 c a% u* k* }# H7 H1 V
char buf[512];
3 v1 ~. _# B% C5 ~, Z) tsscanf("123456","%s",buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!4 Z1 a4 k8 f' X4 f: a
printf("%s\n",buf);
2 S4 F' b8 l/ [结果为:1234565 k0 t# H0 ], Q7 Z. T
2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。
$ \1 X" \) D& b' _/ Q
- A! c- v4 B0 |1 \. u* Q) ^0 p) ?sscanf("123456","%4s",buf);; E, K$ A$ t, Y# u6 D
printf("%s\n",buf);4 E& o/ {1 ~/ q2 k/ B$ a/ d
结果为:1234: }, a- S4 S' i: D% T9 I+ a0 C
3. 取到指定字符为止的字符串。如在下例中,取遇到任意小写字母为止的字符串。( `* ~; J& ~" u( a8 j: D' M
% R$ `2 a6 R# b {6 U+ s' hsscanf("123456abcdedf","%[^a-z]",buf);5 f0 }3 J9 ^" q4 r6 k' t! q
printf("%s\n",buf);% g+ E8 x$ L: ]- s
结果为:123456: ] F0 F( A3 P: _
4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。
. x/ b! g, r5 V: G( U
4 x5 I, \( c \* Usscanf("123456abcdedfBCDEF","%[1-9a-z]",buf);
& P" f: V# K- J; S4 j# {0 qprintf("%s\n",buf);& c+ |8 m( K+ I: {9 u: F7 n
结果为:123456abcdedf, S: d0 w1 Z$ f( j+ k% m
当输入: sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf);) x( H8 ~, u! R5 I
1
$ {. D* r0 |! \: b8 dprintf("%s\n",buf);( i* p1 j8 S1 f( H! o2 i
结果为:123456
5 v9 |5 z B+ J& a/ I( G+ x. n5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
( Z2 n6 R) {1 o |
1 Z7 m0 a; m* z/ y! p' V7 S Isscanf("123456abcdedfBCDEF","%[^A-Z]",buf);1 q" u/ e& i; r; X
printf("%s\n",buf);5 w' l, ?- O2 @* u4 M) {! F1 `
结果为:123456abcdedf
3 }! f4 d! j8 u; z6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,
& `! z8 P# B# G( I! A先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中/ @$ }3 q6 y; M r
* c( W; u0 j; [7 H ^7 g" k5 ?/ vsscanf("iios/12DDWDFF@122","%*[^/]/%[^@]",buf);
5 m1 B3 Y3 |5 A- H( s3 jprintf("%s\n",buf);$ g0 d5 x" ^: s4 a) B h
结果为:12DDWDFF2 g6 i( y) l+ X! \9 B* j) A
7、给定一个字符串“hello, world”,仅保留world。
4 O6 G- K2 a: B% ^( I* Z(注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)& H0 ^, ]: Z" k2 R# z
6 k' B$ }. P7 i% r
sscanf(“hello,world”,"%*s%s",buf);
! b& |$ u3 E" ~3 l9 ^ fprintf("%s\n",buf);
! t% i2 `) ^8 N2 s" |3 m2 y; }7 F结果为:world1 M% g N1 N1 u' Q8 X! K
%*s表示第一个匹配到的%s被过滤掉,即“hello,”被过滤了+ j: L! ^2 b4 }" U5 [* q. U
如果没有空格则结果为NULL。( W9 h" b5 T3 L v! o
0 m' Q1 q2 H k- | |
|