既然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 关注
- 87 浏览
添加回答
举报
0/150
提交
取消