sscanf函式用法詳解

2021-07-03 08:09:39 字數 1929 閱讀 3630

sscanf() - 從乙個字串中讀進與指定格式相符的資料. 

函式原型: 

int sscanf( string str, string fmt, mixed var1, mixed var2 ... ); 

int scanf( const char *format [,argument]... ); 

說明: 

sscanf與scanf類似,都是用於輸入的,只是後者以螢幕(stdin)為輸入源,前者以固定字串為輸入源。 

其中的format可以是乙個或多個 ]type | ' ' | '\t' | '\n' | 非%符號} 

注: 1、 * 亦可用於格式中, (即 %*d 和 %*s) 加了星號 (*) 表示跳過此資料不讀入. (也就是不把此資料讀入引數中) 

2、表示a,b,c中選一,[d],表示可以有d也可以沒有d。 

3、width表示讀取寬度。 

4、:引數的size,通常h表示單位元組size,i表示2位元組 size,l表示4位元組size(double例外),l64表示8位元組size。 

5、type :這就很多了,就是%s,%d之類。 

6、特別的:%*[width] type 表示滿足該條件的被過濾掉,不會向目標引數中寫入值 

支援集合操作: 

%[a-z] 表示匹配a到z中任意字元,貪婪性(盡可能多的匹配) 

%[ab'] 匹配a、b、'中一員,貪婪性 

%[^a] 匹配非a的任意字元,貪婪性 

例子: 

1. 常見用法。 

char buf[512] = ; 

sscanf("123456 ", "%s", buf); 

printf("%s\n", buf); 

結果為:123456 

2. 取指定長度的字串。如在下例中,取最大長度為4位元組的字串。 

sscanf("123456 ", "%4s", buf); 

printf("%s\n", buf); 

結果為:1234 

3. 取到指定字元為止的字串。如在下例中,取遇到空格為止字串。 

sscanf("123456 abcdedf", "%[^ ]", buf); 

printf("%s\n", buf); 

結果為:123456 

4. 取僅包含指定字符集的字串。如在下例中,取僅包含1到9和小寫字母的字串。 

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

sscanf函式用法詳解

sscanf函式用法詳解 名稱 sscanf 從乙個字串中讀進與指定格式相符的資料.函式原型 int sscanf string str,string fmt,mixed var1,mixed var2 int scanf const char format argument 說明 sscanf與s...

sscanf函式用法詳解

名稱 sscanf 從乙個字串中讀進與指定格式相符的資料.函式原型 int sscanf string str,string fmt,mixed var1,mixed var2 int scanf const char format argument 說明 sscanf與scanf類似,都是用於輸入...

sscanf函式用法詳解

a 匹配非a的任意字元,貪婪性 cpp view plain copy print font family arial,helvetica,sans serif 1,sscanf 從乙個字串中讀進與指定格式相符的資料.1,sscanf 從乙個字串中讀進與指定格式相符的資料.cpp view plai...