sscanf() -
從一個字符串中讀進與指定格式相符的數據. 支持集合操作: %[a-z] 表示匹配a到z中任意字符,貪婪性(儘可能多的匹配)
%[aB'] 匹配a、B、'中一員,貪婪性
%[^a] 匹配非a的任意字符,貪婪性 例子: 1.常見用法:
char buf[512] = {0};
sscanf("123456
", "%s", buf); printf("%s\n", buf);
結果爲:123456
|
2.取指定長度的字符串:
sscanf("123456
", "%4s", buf); printf("%s\n", buf);
結果爲:1234
|
3.取到指定字符爲止的字符串:
sscanf("123456
abcdedf", "%[^
]", buf); printf("%s\n", buf);
結果爲:123456
|
4.取僅包含指定字符集的字符串:
sscanf("123456abcdedfBCDEF", "%[1-9a-z]", buf); printf("%s\n", buf);
結果爲:123456abcdedf
|
5.取到指定字符集爲止的字符串:
sscanf("123456abcdedfBCDEF", "%[^A-Z]", buf); printf("%s\n", buf);
結果爲:123456abcdedf
|
6.給定一個字符串iios/12DDWDFF@122,獲取 / 和@ 之間的字符串,先將 "iios/"過濾掉,再將非'@'的一串內容送到buf中:
sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf); printf("%s\n", buf);
結果爲:12DDWDFF
|
7.給定一個字符串““hello, world”,僅保留world:
sscanf(“hello, world”, "%*s%s", buf); printf("%s\n", buf);
結果爲:world
|
%*s表示第一個匹配到的%s被過濾掉,即hello被過濾了
如果沒有空格則結果爲NULL。
sscanf的功能很類似於正則表達式, 但卻沒有正則表達式強大,所以如果對於比較複雜的字符串處理,建議使用正則表達式.