既然get(c)函數是從文件中讀取一個字符,如圖,為什么這種語句可以完整地讀取整個文件的內容啊,為什么不是你一直在重復讀取文件中的第一個字符?是因為條件eof嗎?
2 回答

慕村225694
TA貢獻1880條經驗 獲得超4個贊
操作系統有文件指針的概念,以讀模式打開一個文件時,文件指針指向文件的起始位置,調用讀取函數會使文件指針同步后移,讀取函數總是從文件指針當前指向的位置讀取數據。

慕田峪7331174
TA貢獻1828條經驗 獲得超13個贊
y1.get(j1); 從 文件指針 當前指向的位置 讀入一個字符,字符存放在j1中,文件指針 也會加1 指向 下一個待讀字符。
所以,在while(){} 循環過程中,每次從 當前指向的位置 讀 一個字符,文件指針 推進一格,這樣從 文件指針初始位置 一直往下走,直到讀到 文件結束符 EOF 退出循環。
文件 open 時,文件指針初始位置是文件開始處,
j1 只能存一個字符,由于及時輸出 cout << j1; 到屏幕,所以再讀時,j1可用來存放新的字符并輸出。在用戶看來讀了全文件,輸出了全文件。
!y1.eof() 意思是 當 y1 里的字符 不是 文件結束符 EOF 時 一直循環。
- 2 回答
- 0 關注
- 129 瀏覽
添加回答
舉報
0/150
提交
取消