sscanf 函式小結

2021-05-28 17:16:58 字數 1556 閱讀 6510

1. 常見用法。

char buf[512] ;

sscanf("123456 ", "%s", buf);//此處buf是陣列名,它的意思是將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

當輸入:

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

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

結果為:123456

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。

8.處理2006:03:18 - 2006:04:18(『-』兩邊有空格)和2006:03:18-2006:04:18(『-』兩邊無空格):

前者:char sztime1[16] = "", sztime2[16] = "";

sscanf("2006:03:18 - 2006:04:18", "%s - %s", sztime1, sztime2);

後者:char sztime1[16] = "", sztime2[16] = "";

sscanf("2006:03:18 - 2006:04:18", "%[0-9,:]-%[0-9,:]", sztime1, sztime2);

sscanf用法小結

sscanf可以對字串進行格式化,類似於乙個微型的正規表示式 話不多說,一切盡在 中。直接讀入 3char s abc 4 char buf 10 5sscanf s,s buf 將s讀入buf中 6printf s buf abc78 擷取指定長度字串 9char str 12345 10char...

sscanf 函式用法

read formatted data from a string.intsscanf constchar buffer,constchar format argument intswscanf constwchar t buffer,constwchar t format argument a f...

sscanf()函式總結

sscanf 的作用 從乙個字串中讀進與指定格式相符的資料.原型 int sscanf const char str,const char format,說明 sscanf 會將引數str的字串根據引數format字串來轉換並格式化資料。轉換後的結果存於對應的引數內。成功則返回引數數目,失敗則返回0...