博客
关于我
文件处理之解决使用 feof(c语言)或(fin.eof())出现多读问题
阅读量:322 次
发布时间:2019-03-04

本文共 511 字,大约阅读时间需要 1 分钟。

首先要明确当到达文件末尾时feof()与fin.eof()为真

所以我们是利用!feof()或 !fin.eof()来循环的。

我们通过分析 fin.eof()来得出结果。

1.eof()函数的作用是判断 错误状态流标志 eofbit()是否被设置,若被设置则eof()为true;

2.那么什么时候被设置呢?

首先了解一个概念:文件位置指针。文件位置指针可以虚拟化为一个指针,该指针指向文件当前的读/写位置。

文件刚刚打开时,文件位置指针指向文件首部,随着读/写操作的进行,文件位置指针自动移动。
当文件位置指针移动到文件末尾时, eofbit还未被设置, 此时eof() 函数值为fase; 当文件位置指针已经到达文件末尾, 并尝试进行读/写操作时, eofbit被设置, eof() 函数值为tre。
然而在使用时,文件位置指针到达文件末尾, 此时的fin.eof() 函数为false, 所以while循环条件依然成立; 进入循环体后执行读取或写入操作, 这步操作导致eofbit被设置, 流处于出错状态, eof() 函数值为true。
但是, 该操作却没有任何东西可以进行正确操作,所以有时会导致文件出现乱码。

转载地址:http://klnq.baihongyu.com/

你可能感兴趣的文章
mysql 5.6 修改端口_mysql5.6.24怎么修改端口号
查看>>
MySQL 8.0 恢复孤立文件每表ibd文件
查看>>
MySQL 8.0开始Group by不再排序
查看>>
mysql ansi nulls_SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 什么意思
查看>>
multi swiper bug solution
查看>>
MySQL Binlog 日志监听与 Spring 集成实战
查看>>
MySQL binlog三种模式
查看>>
multi-angle cosine and sines
查看>>
Mysql Can't connect to MySQL server
查看>>
mysql case when 乱码_Mysql CASE WHEN 用法
查看>>
Multicast1
查看>>
mysql client library_MySQL数据库之zabbix3.x安装出现“configure: error: Not found mysqlclient library”的解决办法...
查看>>
MySQL Cluster 7.0.36 发布
查看>>
Multimodal Unsupervised Image-to-Image Translation多通道无监督图像翻译
查看>>
MySQL Cluster与MGR集群实战
查看>>
multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded
查看>>
mysql cmake 报错,MySQL云服务器应用及cmake报错解决办法
查看>>
Multiple websites on single instance of IIS
查看>>
mysql CONCAT()函数拼接有NULL
查看>>
multiprocessing.Manager 嵌套共享对象不适用于队列
查看>>