C 語言沒有專門的輸入輸出語句,所有 I/O 操作均透過標準庫函數實現。scanf() 從鍵盤讀取資料,按指定格式賦值給對應變數。
scanf("控制字串", 輸入項列表);
關鍵點: 每個變數前必須加取址運算子 &(如 &a),否則會導致錯誤結果。
% [修飾符] 格式字符
常用格式字符對照表:
| 格式字符 | 輸入資料類型 | 對應變數類型 |
|---|---|---|
| d | 十進制整數 | int * |
| o | 八進制整數 | int * |
| x | 十六進制整數 | int * |
| u | 無符號十進制整數 | unsigned int * |
| f / e | 實數(小數/指數形式) | float * |
| lf | 雙精度實數 | double * |
| c | 單個字符 | char * |
| s | 字符串(以空白結束) | char * |
*:跳過該輸入項,不賦值(如 %*d)%5d 只讀 5 位數字)h:short 型(%hd)l:long 型(%ld)或 double 型(%lf)int a, b; float c;
scanf("%d %f", &a, &c); // 讀整數與浮點數,以空白分隔
scanf("%3d%2d", &a, &b); // 輸入 12345 → a=123, b=45
scanf("%*d %d", &a); // 輸入 10 20 → 跳過 10,a=20
& 是初學者最常見的錯誤%c)時,若格式字串無空格,所有字符(含空白)均視為有效輸入scanf 無精度控制(如 %5.2f 非法)