linux sscanf app

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的功能很類似於正則表達式, 但卻沒有正則表達式強大,所以如果對於比較複雜的字符串處理,建議使用正則表達式.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章