13.3 為什麼這些代碼  while(!feof(infp)) { fgets(buf, MAXLINE, infp); fputs(buf, outfp); }  把最後一行複製了兩遍?

在 C 語言中, 只有輸入例程試圖讀並失敗以後才能得到文件結束符。 換言之, C 的 I/O 和 Pascal 的不一樣。通常你只需要檢查輸入例程的返回值, 例如, fgets() 在遇到文件結束符的時候返回 NULL。實際上, 在任何情況下, 都完全沒有必要使用 feof()。

參考資料: [K&R2, Sec. 7.6 p. 164]; [ISO, Sec. 7.9.3, Sec. 7.9.7.1, Sec. 7.9.10.2]; [H&S, Sec. 15.14 p. 382]。

翻譯朱群英、孫雲, LaTeX2HTML 編譯 朱群英 (2005-06-23)