|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
×
支持集合操作
' {5 y" R, r* \& c9 S% [) l+ j& C1 y i0 X) @
@6 y- a4 K, j/ o3 n( |; G%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)- |* I& Q3 q0 M( r/ ?
%[aB'] 匹配a、B、'中一员,贪婪性
% B0 i" w( Q4 n/ L' [3 `6 }%[^a] 匹配非a的任意字符,并且停止读入,贪婪性
# ^% m! V) F, Q. V \3 ?7 T- Y2 W" P$ x; x7 x
6 f! \3 V; _: Y7 I1 o9 l5 M
1. 常见用法。
5 E0 S4 P! Z+ B. E9 o/ F% m4 o/ n' q
char buf[512];' p/ ~6 T1 [! H* s4 {9 [7 s
sscanf("123456","%s",buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!
' R2 D5 H8 r& ^/ W+ b$ t+ D7 s- vprintf("%s\n",buf);8 s( _! E2 g5 z( ~" c8 p1 i1 a4 T
结果为:123456
+ ?0 z2 j; L3 H0 k) [$ D& _2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。. q- R# E4 _& T w4 Z8 H# y6 L# q
+ O$ l) ~1 a$ ^# T& G' q- X/ C+ K
sscanf("123456","%4s",buf);" t$ t6 \8 P' G. m; i4 C4 ]2 a
printf("%s\n",buf);
) y- x* T- |, S+ F1 J结果为:1234
' b* B3 V' L! u5 ?0 E# L3. 取到指定字符为止的字符串。如在下例中,取遇到任意小写字母为止的字符串。
5 W3 s1 ^3 ]7 e/ j: Z) A3 a3 B* o* G- `
sscanf("123456abcdedf","%[^a-z]",buf);
1 _" ^& L7 S) S o5 K6 oprintf("%s\n",buf);
) C! n, L8 k7 [" \3 K8 f. l6 ]结果为:123456
4 D' x8 }5 o. m# M" I4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。/ x" s% @2 u$ V O+ J1 d
! G- h' g# M: V: l4 |: }sscanf("123456abcdedfBCDEF","%[1-9a-z]",buf);3 G( G5 J$ U4 ]2 \8 P7 n+ w; H
printf("%s\n",buf);
/ L* {. k/ ^2 C/ K- @ c) o结果为:123456abcdedf7 V% `7 u- q! ~; S' T8 z: |2 P8 j$ i
当输入: sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf);
! q @8 W1 ]2 v3 _0 n2 v/ n1% z; T: m2 P, G8 G. }5 I
printf("%s\n",buf);
7 m. j$ N/ ]3 Q# V1 a结果为:123456
" I' D! N0 b, k5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。. C6 B5 |6 D& B$ L* x
- X: o7 H) J6 u0 \& W% Q
sscanf("123456abcdedfBCDEF","%[^A-Z]",buf);5 G( T* e; Q; F1 o
printf("%s\n",buf);; L! U# N6 ^5 k7 C
结果为:123456abcdedf
% M u9 n/ @2 H0 S* B4 r# j6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,0 l) a* Y7 Z4 t1 A5 k+ w! |
先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中
' A8 N3 f: H1 n" m6 _3 H
3 [9 x8 }" Q& { C$ \+ E+ I. Osscanf("iios/12DDWDFF@122","%*[^/]/%[^@]",buf);
+ |0 q. g- [6 Q5 P7 vprintf("%s\n",buf);' S' G# g; R- ~8 B1 C
结果为:12DDWDFF: b, t) c3 D' G' ^% w; h0 O& B. c
7、给定一个字符串“hello, world”,仅保留world。8 v7 F' j: d/ ~# p c" L
(注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串), q- p) |2 T2 X- h/ \. Z9 j
2 X1 K5 {. S _ _, z! Z+ osscanf(“hello,world”,"%*s%s",buf);; X( Z1 I: ]% W! f. [5 q
printf("%s\n",buf);
+ Q0 v* U2 [1 B8 B" `+ m& x6 B结果为:world
6 B% X6 n. I1 S0 d%*s表示第一个匹配到的%s被过滤掉,即“hello,”被过滤了9 B& _' e* k+ P8 [
如果没有空格则结果为NULL。1 I% @7 z# ~) ^0 N3 R$ f
8 f. n3 r4 S$ ~4 {$ v h, h |
|