fscanf(fp, "%d", &var); 直接讀入整數,為何不需要先讀字符串再 atoi()?
fscanf 根據格式字符串 %d 解析輸入流:
+/-)與數字序列。int 二進制值,存入目標地址。此過程相當於 atoi + 指針推進,但更健壯(自動處理空白、溢出檢查)。
| 方式 | 適用場景 | 優缺點 |
|---|---|---|
| fscanf("%d", &i) | 格式固定的文本文件 | 簡潔、自動跳過空白、返回匹配項數便於錯誤判斷 |
| fgets + atoi/strtol | 需逐行處理、格式不規則 | 可控性強、便於錯誤行定位、需手動去換行符 |
結構化數據讀取優先用 fscanf;日誌解析、混合格式用 fgets + sscanf/strtok。