C++ 程式設計/程式碼/標準 C 庫/函式/scanf
外觀
| 語法 |
#include <cstdio>
int scanf( const char *format, ... );
|
scanf() 函式根據給定的格式從 stdin 讀取輸入,並將資料儲存在其他引數中。它的工作方式與 printf() 非常類似。格式字串包含控制字元、空格字元和非空格字元。控制字元以 % 符號開頭,如下所示
| 控制字元 | 解釋 |
|---|---|
| %c | 單個字元 |
| %d | 十進位制整數 |
| %i | 整數 |
| %e, %f, %g | 浮點數 |
| %lf | 雙精度浮點數 |
| %o | 八進位制數 |
| %s | 字串 |
| %x | 十六進位制數 |
| %p | 指標 |
| %n | 等於到目前為止讀取的字元數的整數 |
| %u | 一個 無符號 整數 |
| %[] | 一組字元 |
| %% | 百分號 |
scanf() 讀取輸入,匹配來自格式的字元。當讀取到控制字元時,它會將值放入下一個變數。空格(製表符、空格等)會被跳過。非空格字元會與輸入匹配,然後被丟棄。如果在 % 符號和控制字元之間有數字,那麼只有這麼多字元會被轉換成變數。如果 scanf() 遇到一組字元,由 %[] 控制字元表示,那麼在括號內找到的任何字元都會被讀入變數。scanf() 的返回值是成功賦值的變數數量,或者如果出現錯誤則為 EOF。
此程式碼片段使用 scanf() 從使用者讀取一個 int、一個 float 和一個 double。請注意,傳遞給 scanf() 的變數引數是按地址傳遞的,如每個變數之前的符號(&)所示
int i;
float f;
double d;
printf( "Enter an integer: " );
scanf( "%d", &i );
printf( "Enter a float: " );
scanf( "%f", &f );
printf( "Enter a double: " );
scanf( "%lf", &d );
printf( "You entered %d, %f, and %f\n", i, f, d );