sscanf函數的用法

來源:互聯網
上載者:User
轉自:http://www.cnblogs.com/kangwang1988/archive/2011/06/06/2073801.html

標頭檔 #include

            定義函數 int sscanf (const char *str,const char * format,........);

            函數說明 
            sscanf()會將參數str的字串根據參數format字串來轉換並格式化資料。格式轉換形式請參考scanf()。轉換後的結果存於對應的參數內。

            傳回值 成功則返回參數數目,失敗則返回-1,錯誤原因存於errno中。 返回0表示失敗    否則,表示正確格式化資料的個數    例如:sscanf(str,"%d%d%s", &i,&i2, &s);    如果三個變成都讀入成功會返回3。    如果唯讀入了第一個整數到i則會返回1。證明無法從str讀入第二個整數。  

            範例 #include 
            main() 
            { 
            int i; 
            unsigned int j; 
            char input[ ]=”10 0x1b aaaaaaaa bbbbbbbb”; 
            char s[5]; 
            sscanf(input,”%d %x %5[a-z] %*s %f”,&i,&j,s,s); 
            printf(“%d %d %s ”,i,j,s); 
            }

            執行 10 27 aaaaa

            sscanf(stringBuf.c_str(), "%20[^#]#%20[^ ]",......)語句中""中的內容含義為:

            “%[ 
            ]”符號用於聲明字串,它比“%s”更具體,可以用於設定讀取的樣式。例如“%[a-z]”唯讀取小寫字母,讀到其它字元就結束。注意,方括弧中如果有“^”,代表一直讀到某字元為止。例如:

            “%[^#]”:讀取字串,一直到出現“#”號為止。

            “%20[^#]”:讀取20個位元組的字串,出現“#”號時結束。

            所以,“%20[^#]#%20[^ ]”的意義就是,

            讀取兩個20位元組大小的字串,第一個字串可以用#結束,第二個字串可以用斷行符號符結束。

            它們的具體闡述,參見MSDN:“scanf Type Field Characters”章節,和“scanf Width 
            Specification”章節。

*********************************************************************************************************************************************

大家都知道sscanf是一個很好用的函數,利用它可以從字串中取出整數、浮點數和字串等等。它的使用方法簡單,特別對於整數和浮點數來說。但新手可能並不知道處理字串時的一些進階用法,這裡做個簡要說明吧。

  1. 常見用法。

以下是引用片段:
  charstr[512]={0};
  sscanf("123456","%s",str);
  printf("str=%s
",str);

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

以下是引用片段:
  sscanf("123456","%4s",str);
  printf("str=%s
",str);

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

以下是引用片段:
  sscanf("123456abcdedf","%[^]",str);
  printf("str=%s
",str);

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

以下是引用片段:
  sscanf("123456abcdedfBCDEF","%[1-9a-z]",str);
  printf("str=%s
",str);

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

以下是引用片段:
  sscanf("123456abcdedfBCDEF","%[^A-Z]",str);
  printf("str=%s",str);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.