|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
支持集合操作1 s# y/ X; Z7 `# ` y
0 E z0 d- r0 t/ n, m0 y2 ?2 Z( }9 O% P; ` n
%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)# d- h8 R/ T3 @
%[aB'] 匹配a、B、'中一员,贪婪性/ T) M, e! j8 ]+ [( E |2 v9 c
%[^a] 匹配非a的任意字符,并且停止读入,贪婪性
6 f4 u0 P. t3 q. F% d" Q; P [
0 o2 i% `9 |# R5 w- Z5 ?& H# H+ o# |7 ?5 j! I! s
1. 常见用法。7 Z8 g# D& E" q# i# r
! t! d; t% X7 Zchar buf[512];0 \% v) A7 C+ M s; B
sscanf("123456","%s",buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!3 g$ T0 F; K) O3 V& x" ]- F
printf("%s\n",buf);7 T8 X2 q$ g+ f& ]- d
结果为:123456, I3 A3 a+ D5 ~7 d
2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。
# \ ^; B# ^5 V4 b g4 ]# h* r5 C; m' X6 u4 I( h
sscanf("123456","%4s",buf);3 L% h( }- t9 u4 J8 n
printf("%s\n",buf);& ]) `1 Q" \: Q0 b1 ?8 T, a
结果为:1234
! p0 ^* h* C! e1 ^+ D% G0 ?) N, _3. 取到指定字符为止的字符串。如在下例中,取遇到任意小写字母为止的字符串。! ?1 ?5 q# T1 T2 ?+ ^2 b( N5 z
5 n: u: B+ I8 A; P( [
sscanf("123456abcdedf","%[^a-z]",buf);5 e4 x1 v# y; S, c: w3 x. {& I
printf("%s\n",buf);
3 ~; B) ]6 j- M9 r" e1 T* ]7 z结果为:123456
& E0 E- m3 M0 O* l, e# M0 N6 @0 V; r% K4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。
& ~8 N& c* s5 q, S( \. F! g6 M! d; n- W9 F
sscanf("123456abcdedfBCDEF","%[1-9a-z]",buf); h6 R2 D* E" O$ u8 l) s* q
printf("%s\n",buf);
5 j! @! ]# U* F" P结果为:123456abcdedf) `8 ^1 S: i4 K8 H8 w' P
当输入: sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf);
3 x: E7 L, i1 F1# W( ~! Z- N/ D* Z N- S+ |* ?
printf("%s\n",buf);
2 n$ ~" A* A; ]: I% B0 H& C结果为:123456
2 F2 d5 l2 r$ k# i8 d# F: |5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。8 O6 ?# D8 w" O
- l' J6 i0 W8 }0 ]sscanf("123456abcdedfBCDEF","%[^A-Z]",buf);
' ~" U$ u3 u9 Iprintf("%s\n",buf);
+ x) }$ d# D/ J3 n, H! J# S结果为:123456abcdedf
) |$ S/ w7 U) ?6 r0 L6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,+ ?' p, R5 T% a+ U7 G% g- e
先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中( b4 K) a% T4 l) H
9 f6 P# g3 G% o Q3 S! H
sscanf("iios/12DDWDFF@122","%*[^/]/%[^@]",buf);# T% U* }4 d1 |1 A8 k1 M$ @* m
printf("%s\n",buf);% c& I7 }( m' J$ z
结果为:12DDWDFF
7 _0 G- h+ t1 b" O+ v4 E9 ?7 p) z7、给定一个字符串“hello, world”,仅保留world。
' v# X, V. c: ^7 @7 _9 h, a* C# ?3 {(注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)$ L. X) [1 S3 \) p1 d
) {, N2 ]5 n" U( E8 D, e
sscanf(“hello,world”,"%*s%s",buf);
/ ?7 i; |- p% U" X0 S8 F) Qprintf("%s\n",buf);9 b+ n g. b6 B6 _7 o; f. d- _
结果为:world( e, X+ U) _' R7 N, J: [0 ~. F- j
%*s表示第一个匹配到的%s被过滤掉,即“hello,”被过滤了
4 Z8 D6 r6 p8 ^! Y3 B& }. y T如果没有空格则结果为NULL。% {! f& I% ?* a( A
" b) S% ?+ R- s5 m) I" {8 g |
|