|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
支持集合操作
2 l( b- g; _, V8 H* e u$ w, ]: N$ l0 E! h0 j) S7 w) C
5 e( s. \* C* v# B& N- S4 z* O%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)
, H9 P+ }/ Q1 Z- Y1 k# N%[aB'] 匹配a、B、'中一员,贪婪性# s' L8 k- ?4 k2 s: Y" ~; x1 e9 o6 ?
%[^a] 匹配非a的任意字符,并且停止读入,贪婪性
, e& b9 I* X" m/ \* w
; ]$ T2 l2 d9 H$ v
' F6 F% ?9 F `6 y6 X) g' k. f1. 常见用法。; h" }1 o+ E" [3 V& R, G( s
5 d$ M0 c- O; \, y6 P
char buf[512];
0 I) D; W/ ?8 q" Fsscanf("123456","%s",buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!
; p+ k9 w1 O8 P% Qprintf("%s\n",buf);9 U$ _1 H' W7 S# C1 P9 ^. z
结果为:123456+ @7 v5 ^; X' A, ^9 f
2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。
$ ]8 c* i* R" m1 i
# `# Q; }- [9 p0 p' Wsscanf("123456","%4s",buf);
8 C& e3 T+ ?4 jprintf("%s\n",buf);, S `& S) j! q3 _1 V
结果为:1234
5 C: Y4 @7 R: D+ a3. 取到指定字符为止的字符串。如在下例中,取遇到任意小写字母为止的字符串。
. g! z4 S5 p6 m: V% j- f" s1 h! c2 P* p& [
sscanf("123456abcdedf","%[^a-z]",buf);1 x" o5 ^- Q' R
printf("%s\n",buf);
5 b& r& G4 B' Q" v6 C结果为:123456# K L4 s' s4 T( o$ E% u
4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。! X5 a% |* a' x7 U8 S0 ^6 I1 F
; ?) ?2 E* U2 b! ]2 r, f* F( |5 X
sscanf("123456abcdedfBCDEF","%[1-9a-z]",buf);
9 o. U7 p5 R- z0 W5 e" s+ C7 _- nprintf("%s\n",buf); _% X' a% d/ |0 F c0 m7 k! [
结果为:123456abcdedf
' W* c* y8 {6 A3 Z当输入: sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf);( w0 R g5 k' U* Q, r# q6 N2 \$ O- h+ F
1
$ U6 M& { b9 N/ R2 B/ bprintf("%s\n",buf);( w" M3 M- Z9 [3 O
结果为:123456& v6 e/ y: @* i" k z
5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。$ N% g- w0 v9 r5 B6 s9 z, F
" g2 Q! n8 V) r6 R" l. b$ \sscanf("123456abcdedfBCDEF","%[^A-Z]",buf);0 o) F2 R8 r+ @* ?, |
printf("%s\n",buf);: j1 Y. E( g2 h; C. l
结果为:123456abcdedf
5 J& O( c; i& v5 d/ S) s! ]6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,
# m$ i6 r" b! I& s: l先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中
$ Z6 E; q. T) e. b0 I+ E5 \- U+ \2 A1 `$ j" S6 ~ n
sscanf("iios/12DDWDFF@122","%*[^/]/%[^@]",buf);
* k4 Z+ H- ]6 ?' K$ \printf("%s\n",buf);
S3 [2 N7 @ C K' u; U" C结果为:12DDWDFF& c' V% I0 O! ]3 o1 W
7、给定一个字符串“hello, world”,仅保留world。6 ^$ a) I3 @6 \% ]
(注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)
% ]. P% Z$ I& L# b/ v/ X! g6 {3 f/ c2 m1 c5 x4 n
sscanf(“hello,world”,"%*s%s",buf);. \, V$ v2 }* ~
printf("%s\n",buf);5 j9 }( K/ B5 p/ Q
结果为:world
5 X3 j3 y z# [* X" H9 Z6 M%*s表示第一个匹配到的%s被过滤掉,即“hello,”被过滤了
Z& p; y7 F6 P: m如果没有空格则结果为NULL。% n0 c. G# ?2 p1 k
$ O6 c( c. d$ |2 M( N
|
|