在 C 語言中, scanf 函數在以下幾種情況下會結束輸入讀取: :
1. 遇到指定格式匹配失敗: scanf 按照格式字符串要求讀取輸入。當輸入數據格式與格式字符串不匹配時,就會結束讀取。例如 scanf(“%d”, &num) 要求輸入整數,若輸入字符 a ,匹配失敗, scanf 就會結束讀取,輸入流中的 a 會留在緩沖區。
2. 遇到空白字符: scanf 在讀取非空白字符(如 %d 、 %s 等格式)時,遇到空白字符(空格、制表符 \t 、換行符 \n )會認為當前數據讀取結束。比如 scanf(“%s”, str) 讀取字符串,遇到空白字符就會停止讀取,將已讀取的非空白字符組成字符串存入 str 。
3. 達到輸入字段寬度限制:如果在格式字符串中指定了字段寬度,如 scanf(“%3d”, &num) ,當輸入的數字字符達到指定寬度(這里是 3 個字符)時, scanf 結束讀取。例如輸入 1234 ,只會讀取 123 賦值給 num 。
4. 遇到文件結束標志:當從文件或標準輸入讀取數據時,遇到文件結束標志(在 Windows 系統中通常是 Ctrl + Z 后按回車鍵,在 Linux 和 macOS 系統中是 Ctrl + D ), scanf 函數會返回 EOF 并結束讀取。
scanf 函數結束讀取的情況多樣,使用時要注意輸入數據與格式字符串的匹配,以及處理可能出現的錯誤情況。