scanf 函式的格式化輸入

2022-03-13 03:43:56 字數 1916 閱讀 9731

函式原型:

int scanf (const char * restrict format, ...)

跟printf( )一樣,scanf( )使用控制字串和引數列表。但和printf( )的區別是,printf( )函式使用變數名、變數和表示式;而scanf( )函式使用指向變數的指標

scanf( )函式所用的轉換說明字元與printf( )所使用的幾乎完全相同。主要區別在於printf( )把%f、%e、%e、%g和%g同時用於float型別和double型別,而scanf( )只把它們用於float型別,而用於double型別時要求使用l修飾符。

scanf的轉換說明符

轉換說明符

意義%c

把輸入解釋成乙個字元

%d把輸入解釋成乙個有符號十進位制整數

%e,%f,%g,%a

把輸入解釋成乙個浮點數(%a是c99標準)

%e,%f,%g,%a

把輸入解釋成乙個浮點數(%a是c99標準)

%i把輸入解釋成乙個有符號十進位制整數

%o把輸入解釋成乙個有符號八進位制整數

%p把輸入解釋成乙個指標(乙個位址)

%s%u

把輸入解釋成乙個無符號十進位制整數

%x,%x

把輸入解釋成乙個有符號十六進製制整數

%a,%a使用p-計數法表示浮點數:整數部分使用十六進製制數表示,小數部分使用2的冪次表示。

scanf的轉換修飾符

修飾符意義

*滯後賦值

digit(s)

最大字段寬度:在達到最大字段寬度或者遇到第乙個空白符時停止對輸入項的讀取

hh把整數讀作signed char或unsigned char

ll把整數讀作long long或unsinged long long(c99)

h,l或l

如果沒有修飾符,d、i、o和x指示int型別,而e、f和g指示float型別。

修飾符h使d、i、o、x和u變更為對應的short型別,使e、f和g變更為指示double型別;

l使e、f和g變更為指示long double型別

scanf( )函式允許您把普通字元放在格式字串中。除了空格字元之外的普通字元一定要與輸入字串準確匹配。例如,如果把逗號放在兩個說明符之間:

scanf("%d, %d", &n, &m);

則輸入必須為如下形式才會被接受:

88, 121

格式字串中的空格意味著跳過下乙個輸入項之前的任何空白符(但必須要有空白符,不可以沒有)。

除了%c之外的說明符會自動跳過輸入項之前的空格,所以scanf("%d%d", &n, &m)與scanf("%d %d", &n, &m)的行為是相同的。

但要注意%c會讀取輸入中的空白符,所以scanf("%c", &n)與scanf(" %c", &n)的行為是不同的。前者會讀取輸入中遇到的第乙個(任意)字元,後者會先跳過空白符,讀取遇到的第乙個非空白字元。

在scanf( )中的*和在printf( )中的含義截然不同。當把它放在%和說明符字母之前時,它使函式跳過相應的輸入專案。程式示例:

/* skip.c -- 跳過輸入的頭兩個整數 */

#include int main(void)

輸入:2004 2005 2006

輸出:2006

scanf( )函式返回成功讀入的專案的個數。如果它沒有讀取任何專案,會返回值0。當它檢測到「檔案結尾」時,會返回eof。

scanf格式化輸入

scanf 函式的功能是從計算機預設的輸入裝置 一般指鍵盤 向計算機主機輸入資料。呼叫scanf 函式的一般格式如下 scanf 格式字串 輸入項位址表 例如 scanf d f i,f 其中,格式字串 可以包含三種型別的字元 格式指示符 空白字元 空格 跳格鍵 回車鍵 和非空白字元 又稱為普通字元...

scanf 格式化輸入

scanf 有種帶的格式化輸出方式 此格式控制符的基本格式為 scanfset includeint main 以下來自網路 scanfset 有兩種形式 一種是以非 字元開頭的 scanset 表示在讀入字串時將匹配所有在 scanfset 現的字元,遇到非scanfset 中的字元時輸入就結束 ...

C 語言 scanf 格式化輸入函式

scanf 函式從標準輸入流中讀取格式化字串。與 printf 格式化輸出函式相反,scanf 函式是格式化輸入函式。include int scanf const char format,題目 設有定義 double a,b,c 若要求通過輸入分別給a b c輸入1 2 3,輸入形式如下 注 此處...