|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
支持集合操作" C$ i" p- T' W" v* S0 ~
; I" |! D6 h' `6 H1 ~
/ c; L$ m& L" L5 Q" {
%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)
- b$ n5 _ I: n: l; Z( [/ v9 U7 B%[aB'] 匹配a、B、'中一员,贪婪性
6 N# o0 p; h: r9 |. V2 Q7 `0 }%[^a] 匹配非a的任意字符,并且停止读入,贪婪性- e3 y8 k2 x( N% b2 y" I) U- r
' m8 l; ?# L2 G+ m* |
' ], l) b, n5 l) |0 Q V- N% W
1. 常见用法。% ?: {* s0 [6 ]& T: K
0 ~- e- R" j' E$ l. Nchar buf[512];
6 ~2 e x3 _* d+ W- Csscanf("123456","%s",buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!
( L/ U: m3 ^+ c) _printf("%s\n",buf);9 k* E* [! M ^* t1 i
结果为:123456$ r2 ?5 y) p; k" z6 J0 x* u
2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。
+ D" J/ { n5 i# q! Y: I" ~+ E6 u( Q. f4 W. Z4 k
sscanf("123456","%4s",buf);. F0 v. P; d: z0 M7 b9 \
printf("%s\n",buf);
: j8 g' a; j/ P+ X H结果为:1234
# g* s, ?. j1 h( O3. 取到指定字符为止的字符串。如在下例中,取遇到任意小写字母为止的字符串。5 V y* [4 e; }- A* p
( O+ f+ t8 o$ X# J3 X6 _1 ^
sscanf("123456abcdedf","%[^a-z]",buf);2 ]. u5 ] x/ j% @" E
printf("%s\n",buf);; U( y. j! A6 Z* h
结果为:123456; ]% p+ J! V) }5 S$ l3 Q
4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。" C+ Z: E3 n; i. |- J
( N( x$ {3 ^! l! Q" ?2 O
sscanf("123456abcdedfBCDEF","%[1-9a-z]",buf);! S6 q4 |) v! K' w; R7 q
printf("%s\n",buf);1 I- v1 S$ q# D- ]
结果为:123456abcdedf
9 U; `; _* j9 Z5 l; h7 r当输入: sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf);
0 m. A3 ~( F( m6 b1% w3 F: \" F- A% C2 `2 S) ~
printf("%s\n",buf);1 P& Z8 l1 A. p# c1 p" _- h) h
结果为:1234566 b' l7 S9 u L& P8 v5 x
5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
0 e7 y' O+ b8 _- a3 t9 k( R& q
; _4 }# k- ?' }* P/ {$ z* Ssscanf("123456abcdedfBCDEF","%[^A-Z]",buf);
2 X7 [, w- |. C# Y! n6 _" B, k! xprintf("%s\n",buf);
: l# n& g. O- X. Z9 U$ f; N结果为:123456abcdedf' n$ ?' S. d; ?0 |- B
6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,
& E/ |) g/ B8 H5 ^5 y先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中
2 g: M! j5 t- W! Y F
$ ^& L& F+ [/ L( S3 D! R; e' @sscanf("iios/12DDWDFF@122","%*[^/]/%[^@]",buf);% C) f9 H0 A. K8 f+ M
printf("%s\n",buf);2 S1 P7 j6 F) C- r, r; {
结果为:12DDWDFF" g1 H1 E! K* @! I
7、给定一个字符串“hello, world”,仅保留world。
5 v8 R6 L2 E, f- }(注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)& ?6 a6 J, I4 B
- r0 q# Q& m- Q5 \sscanf(“hello,world”,"%*s%s",buf);$ D9 X* _0 u0 {/ {. u/ I
printf("%s\n",buf);5 m& a: Q9 U. I8 {8 Q
结果为:world& [; ?8 |3 ?; F& m5 ^) x
%*s表示第一个匹配到的%s被过滤掉,即“hello,”被过滤了( o ^1 Z7 Y9 k+ ?
如果没有空格则结果为NULL。
& L+ N# F0 ?# y+ G9 I- L. b8 v+ N( r3 x
|
|