天天看點

sscanf()--字元串格式化輸入

sscanf() 的作用:從一個字元串中讀進與指定格式相符的資料.

原型: int sscanf (const char str,const char format,……..);

說明: sscanf()會将參數str的字元串根據參數format字元串來轉換并格式化資料。轉換後的結果存于對應的參數内。

成功則傳回參數數目,失敗則傳回0。

注意:sscanf與scanf類似,都是用于輸入的,隻是後者以鍵盤(stdin)為輸入源,前者以固定字元串為輸入源。

大家都知道sscanf是一個很好用的函數,利用它可以從字元串中取出整數、浮點數和字元串等等。它的使用方法簡單,特别對于整數和浮點數來說。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(){
    char str[];
    //用法一:取指定長度的字元串
    sscanf("12345","%4s",str);
    printf("用法一\nstr = %s\n",str);

    //用法二:格式化時間
    int year,month,day,hour,minute,second;
    sscanf("2013/02/13 14:55:34","%d/%d/%d %d:%d:%d",&year,&month,&day,&hour,&minute,&second);
    printf("用法二\ntime = %d-%d-%d %d:%d:%d\n",year,month,day,hour,minute,second);

    //用法三:讀入字元串
    sscanf("12345","%s",str);
    printf("用法三\nstr = %s\n",str);

    //用法四:%*d 和 %*s 加了星号 (*) 表示跳過此資料不讀入. (也就是不把此資料讀入參數中)
    sscanf("12345acc","%*d%s",str);
    printf("用法四\nstr = %s\n",str);

    //用法五:取到指定字元為止的字元串。如在下例中,取遇到'+'為止字元串。
    sscanf("12345+acc","%[^+]",str);
    printf("用法五\nstr = %s\n",str);

    //用法六:取到指定字元集為止的字元串。如在下例中,取遇到小寫字母為止的字元串。
    sscanf("12345+acc121","%[^a-z]",str);
    printf("用法六\nstr = %s\n",str);
    return ;
}
           
sscanf()--字元串格式化輸入

sscanf()的一個重要作用是将C類型(C++類型字元串可通過c_str()函數轉化為C類型字元串)的字元串轉化為整形,這種程式中會經常用到