首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言 fprintf/fscanf 缺少分隔符導致讀取錯誤 (34,0 vs 3,4)

     編輯:程式設計綜合問答

錯誤代碼

for (i = 3; i < 5; i++)
    fprintf(fp, "%d", i);  // 輸出 "34" 無分隔
fscanf(fp, "%d%d", &k, &n); // 讀成 34 和 0 (第二個 %d 讀不到)

原因

fprintf 不自動添加分隔符,連續寫入 3 和 4 形成 "34"。fscanf 遇 %d 會貪婪讀取整個數字 34,第二個 %d 面對 EOF 失敗保留初值 0。

修正

fprintf(fp, "%d ", i);  // 加空格或換行
// 或
fprintf(fp, "%d\n", i);

最佳實踐

  • 寫入時**固定分隔符** (空格、逗號、換行)。
  • 讀取時對應相同格式,或用 fgets 讀整行再 sscanf/strtok 解析,更健壯。
  • 檢查 fscanf 回傳值 (成功轉換數量) 確保讀取正確。

修正後輸出

3 4 
// fscanf 讀取 → k=3, n=4
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved