- 論壇徽章:
- 0
|
sscanf() - 從一個字符串中讀進(jìn)與指定格式相符的數(shù)據(jù).
支持集合操作:
%[a-z] 表示匹配a到z中任意字符,貪婪性(盡可能多的匹配)
%[aB'] 匹配a、B、'中一員,貪婪性
%[^a] 匹配非a的任意字符,貪婪性
例子:
1.常見用法:
char buf[512] = {0};
sscanf("123456 ", "%s", buf);
printf("%s\n", buf);
結(jié)果為:123456
2.取指定長度的字符串:
sscanf("123456 ", "%4s", buf);
printf("%s\n", buf);
結(jié)果為:1234
3.取到指定字符為止的字符串:
sscanf("123456 abcdedf", "%[^ ]", buf);
printf("%s\n", buf);
結(jié)果為:123456
4.取僅包含指定字符集的字符串:
sscanf("123456abcdedfBCDEF", "%[1-9a-z]", buf);
printf("%s\n", buf);
結(jié)果為:123456abcdedf
5.取到指定字符集為止的字符串:
sscanf("123456abcdedfBCDEF", "%[^A-Z]", buf);
printf("%s\n", buf);
結(jié)果為:123456abcdedf
6.給定一個字符串
[email=iios/12DDWDFF@122]iios/12DDWDFF@122[/email]
,獲取 / 和@ 之間的字符串,先將 "iios/"過濾掉,再將非
[email='@']'@'[/email]
的一串內(nèi)容送到buf中:
sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf);
printf("%s\n", buf);
結(jié)果為:12DDWDFF
7.給定一個字符串““hello, world”,僅保留world:
sscanf(“hello, world”, "%*s%s", buf);
printf("%s\n", buf);
結(jié)果為:world
%*s表示第一個匹配到的%s被過濾掉,即hello被過濾了
如果沒有空格則結(jié)果為NULL。
sscanf的功能很類似于正則表達(dá)式, 但卻沒有正則表達(dá)式強(qiáng)大,所以如果對于比較復(fù)雜的字符串處理,建議使用正則表達(dá)式.
http://bbs3.chinaunix.net/viewthread.php?tid=1254167
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u1/57669/showart_1837508.html |
|