C語言函式sscanf 的用法

2021-08-04 14:51:25 字數 1411 閱讀 1038

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

輸入格式為hh:mm:ss的字串,輸出hh,mm,ss.

#include int main()

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

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

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

char buf[512] = ;

sscanf(「123456 「, 「%s」, buf);

printf(「%s\n」, buf);

結果為:123456

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

sscanf(「123456 「, 「%4s」, buf);

printf(「%s\n」, buf);

結果為:1234

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

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

printf(「%s\n」, buf);

結果為:123456

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

sscanf(「123456abcdedfbcdef」, 「%[1-9a-z]」, buf);

printf(「%s\n」, buf);

結果為:123456abcdedf

取到指定字符集為止的字串。如在下例中,取遇到大寫字母為止的字串。

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

C語言之函式sscanf 的用法

int sscanf const char const char int sscanf const char buffer,const char format,argument buffer儲存的資料 format格式控制字串 argument選擇性設定字串 sscanf會從buffer裡讀進資料,...

C語言中sscanf 用法

int sscanf const char const char int sscanf const char buffer,const char format,argument buffer儲存的資料 format格式控制字串 argument選擇性設定字串 sscanf會從buffer裡讀進資料,...

C語言中 sscanf 的用法

sscanf 從乙個字串中讀入,指定格式的資料,並存入對應的引數列表中.返回值 失敗 1 成功 格式化引數的數目.str 待讀入的字串,特定的字串 fmt 格式化方式 var1 var2 引數列表 intsscanf string str,string fmt,mixed var1,mixed va...