為什麼這篇c語言eof用法鄉民發文收入到精華區:因為在c語言eof用法這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者Nestarneal (涅斯)看板C_and_CPP標題[問題] C++ eof時間Fri Ju...
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
C++
問題(Question):
我的檔案中有以下資料:『
a 0
e 3』
CODE為:
while(!fin.eof())
{
fin >> tmp1;
fin >> tmp2;
cout << tmp1 << endl;
}
輸出結果為:
a
e
a 0
我用 /eof 有搜尋到一篇文章,內容大致上是說:
eof在讀取時才會判斷有沒有到檔尾,
所以在讀完e跟3以後還會再繼續一次while,
但是這次進入while遇到fin時,程式就會發現已經到檔尾,
所以就不會有再下一次的while。
如果照上面的說法,那輸入結果應該是:
a
e
e
才對,但卻不是如此。
我最大問題點在於那個0,
在先前讀檔案的時候,0應該是被放入tmp2,
而我輸出只有tmp1,所以不管怎樣都不該出現0。
所以我想會不會是我對於eof的理解有所出入,
上面對於eof的用法還有需要更正的地方呢?
麻煩各位解答一下囉,謝謝。
------補充問題-------
我剛剛把其他跟檔案IO無關的CODE做了一些修改,
結果卻能夠正常顯示結果了...
不過還是想請問我對於eof的觀念哪裡需要更正。
因為無論是之前錯誤的情況,還是現在莫名變成正確的情況,
跟我對於eof的瞭解都還是有出入。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.33.61.196
※ 編輯: Nestarneal 來自: 114.33.61.196 (06/24 14:31)