2011-10-02 42 views

回答

8

有兩個主要原因。 @Etienne指出:除了達到文件末尾之外,閱讀可能因某種原因失敗,在這種情況下,您的第一個版本將進入無限循環。

但是,即使沒有其他故障,第一個將無法正常工作。在之後,eof()將不會被設置,直到由於文件已達到,讀取嘗試失敗。這意味着第一個循環會執行一個額外的迭代,你並不是真正想要的。在這種情況下,最終會在文件末尾添加一個空白(空)行。根據你的工作,這可能或可能不重要。根據您讀取數據的情況,在輸出中看到最後一行重複也很常見。

3

由於多種原因,流操作(例如讀取)可能會失敗。 eof()只測試其中一個。要全部測試,只需使用流的void *轉換運算符。這就是第二個片段所做的。