C语言 ——— 文件读取结束的判定

news2024/9/29 7:17:56

目录

判定文件读取结束的方式

被错误使用的feof函数

判定文件结束的正确使用


判定文件读取结束的方式

判断文本文件是否读取结束:

利用 fgetc 判断返回值是否为 EOF

利用 fgets 判断返回值是否为 NULL

判断二进制文件是否读取结束:

利用 fread 判断返回值是否小于实际要读的个数


被错误使用的feof函数

在文件读取过程中,不能用 feof 函数的返回值直接判断文件是否结束

frof 函数的作用是:

当文件读取结束时,判断时读取结束的原因是否是:遇到了文件末尾才结束


判定文件结束的正确使用

代码演示:

#include<stdio.h>
int main()
{
	// 以读的方式打开 "text.txt" 文件
	FILE* pf = fopen("text.txt", "r");

	// 判断是否成功打开
	if (pf == NULL)
	{
		perror("fopen");
		return 0;
	}

	// fgetc 当读取失败或者遇到文件末尾的时候,返回EOF
	while (fgetc(pf) != EOF)
	{
		;
	}

	// 判断是什么原因结束的
	if (ferror(pf) != 0)
	{
		// 说明是发生错误结束的
		perror("ferror");
		return -2;
	}
	else if (feof(pf) != 0)
	{
		// 说明是遇到了文件末尾才结束
		printf("成功遇到了文件末尾\n");
	}

	// 关闭文件
	fclose(pf);
	pf = NULL;

	return 0;
}

代码验证:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2088104.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

00 Tkinter学习路线

Tkinter学习路线 此Tkinter以更新完毕&#xff0c;几乎涵盖了Tkinter所有知识点 此文章用于快速找到对应的知识点 01 Tkinter介绍 02 Tkinter窗口的管理与设置 03 Tkinter布局方式 04 Tkinter布局组件 05 Tkinter事件 06 Tkinter可变变量 07 Label 组件 08 Button 组件 09 Entr…

大模型技术 | 基于大模型构建本地知识库

前言 随着人工智能技术的发展&#xff0c;大模型已成为智能系统进步的关键力量。 模型以其庞大的数据容量和深度学习能力&#xff0c;为处理复杂任务提供了前所未有的可能性。但在特定应用场景下仍面临挑战&#xff0c;尤其是在需要快速、准确响应的情境中。为了克服这些限制…

.NET Razor类库-热加载 就是运行时编译

1.新建3个项目 1.1 一个.NET Standard2.1项目 IX.Sdk.SvnCICD4NuGet 1.2 一个.NET Razor类库项目 IX.Sdk.SvnCICD4NuGet.RazorWeb 1.3 一个.NET6 Web项目 IX.Sdk.SvnCICD4NuGet.Web 这3个项目的引用关系 Web引用 Razor类库 和 .NET Standard2.1 Razor类库引用.NET Standard2.1…

VBA学习(65):Excel VBA 凭证打印/SQL连接Eexcel文件/Listview控件/CommandButton命令按钮控件

本期内容信息量相当的大&#xff0c;内容涉及很多方面&#xff0c;请耐心阅读&#xff0c;肯定不会让你失望的&#xff01;建议收藏&#xff01; Excel中记账凭证的打印&#xff0c;几种思路 Excel表记账的缺点 最新的打印方法&#xff1a;勾选凭证列表&#xff0c;点打印即可…

OpenCV中使用金字塔LK光流法(下)

接下来通过一个demo来调用calcOpticalFlowPyrLK()实现光流计算,需要注意的是该方法适用于具有丰富特征的像素点的光流计算,平坦区域的像素点往往会得到误差较大的结果。所以我们需要先选取得到一些角点,demo中通过goodFeaturesToTrack()这个接口实现角点提取。 如下有两张图…

nvm切换node版本(windows版本)

如果是win系统&#xff0c;不能直接通过npm来安装nvm(npm install nvm不行&#xff01;)。需要手动去nvm官网下载安装包安装nvm github官网 先卸载本地的node版本 npm ls -g --depth0 // 查看全局安装中是否有早前安装的node 1.点击进去Github上往下滑会发现有一个download。进…

IP网络协议

目录 一、IP协议简介 二、IP协议报头 三、IP网段划分&#xff08;子网划分&#xff09; 四、特殊的IP地址 五、IP地址的数量限制 六、私有IP地址和公网IP地址 七、路由 八、分片与组装 一、IP协议简介 IP指网际互连协议&#xff0c;Internet Protocol的缩写&#xff0…

Vue+ElementUI+Electron环境搭建及程序打包

一.环境 Node.js Element-ui Electron 二.Node.js 1.下载并安装Node.js 2.安装完成后,新建目录”node_cache“ ”node_global“ 3.新建及修改环境变量 4.执行如下命令 npm config set prefix "D:\Source_Install\nodejs\node_global" npm config set cache &q…

设计模式-简单工厂模式工厂方法模式

1. 简单工厂模式定义 简单工厂模式&#xff08;Simple Factory Pattern&#xff09;是一种创建型设计模式&#xff0c;它通过专门定义一个类来负责创建其他类的实例&#xff0c;这个类通常被称为工厂类。简单工厂模式并不是一种正式的设计模式&#xff0c;但它确实是一种常用的…

认识Kubebuilder

认识Kubebuilder 一、什么是Kubebuilder?Kubebuilder&#xff0c;K8s operator创建框架controller-runtime和controller-tools库 二、Kubebuilder&#xff0c;举例来说开源项目kuik 三、使用 kubebuilder init 创建基础项目四、使用kubebuilder create api生成控制器CachedIma…

gitea仓库迁移新服务器 更新远程仓库地址(git remote remove origin)

文章目录 引言I 镜像部署方式迁移案例迁移容器备份gitea服务器配置II 修改​远程仓库地址set-url语法案例III 扩展基于git命令方式进行代码迁移忽略被追踪的文件(update .gitignore)see also引言 由于部署git仓库的机器不稳定,决定进行服务器迁移。更新远程仓库地址的应用场景…

传统助贷机构如何利用CRM系统转型升级

传统助贷机构在利用CRM系统&#xff08;客户关系管理系统&#xff09;进行转型升级时&#xff0c;可以遵循以下几个关键步骤和策略&#xff0c;以优化客户管理、提升业务效率并实现业务增长&#xff1a; 一、明确转型升级目标 首先&#xff0c;传统助贷机构需要明确利用CRM系统…

使用docker compose一键部署 Openldap

使用docker compose一键部署 Openldap LDAP&#xff08;轻量级目录访问协议&#xff0c;Lightweight Directory Access Protocol&#xff09;是一种用于访问分布式目录服务的网络协议&#xff0c;OpenLDAP 是 LDAP 协议的一个开源实现&#xff0c;由 OpenLDAP 项目提供&#x…

python库(21):TextBlob库实现文本处理

1 TextBlob简介 TextBlob 是一个基于 Python 的文本处理库&#xff0c;能够让基础的自然语言处理任务变得异常简单。 它提供了一个简单直观的 API&#xff0c;让你能够轻松执行词性标注、名词短语提取、情感分析、文本分类和关键词提取等功能。 值得一提的是&#xff0c;Tex…

Linux git的基本使用 安装 提交

目录 安装git 首次使用git的配置 拉取仓库 步骤1&#xff1a;新建仓库 步骤2:复制仓库地址 步骤3&#xff1a;远端仓库拉取到本地 上传代码 常用指令 安装git sudo apt-get install git # Ubuntu/Debian sudo dnf install git # Fedora sudo yum insta…

BMS中内阻补偿的使用

在BMS&#xff08;电池管理系统&#xff09;中&#xff0c;内阻补偿的使用主要涉及以下几个步骤和方法&#xff1a; 1. 内阻测量 实时监测&#xff1a;通过专用电路或算法实时测量电池的内阻。常用的方法包括脉冲测试法和交流阻抗测试法。计算内阻&#xff1a;基于电流和电压…

基于AI+多技术融合在流域生态系统服务评价 制图、水资源水环境水生态分析、土壤侵蚀分析、流域产水分析、流域碳收支评估、气候变化影响等应用

流域生态系统服务在环境保护与资源管理中具有不可替代的重要性。随着全球气候变化和人类活动对自然环境的压力日益增大&#xff0c;流域生态系统的稳定性和健康状况面临严峻挑战。水资源短缺、洪水频发、水质污染、生物多样性减少等问题&#xff0c;正在威胁流域内及其下游区域…

【综合架构】Part 5.2 Ansible

安装设备&#xff1a;管理设备-m01-10.0.0.61 部署与配置 部署 yum install -y ansible 配置 步骤 1&#xff1a;修改配置文件&#xff1a;关闭Host_key_checking。 vim /etc/ansible/ansible.cfg 步骤 2&#xff1a;修改配置文件&#xff1a;开启日志功能。

作为HR如何解决候选人爽约的问题

为了降低候选人的爽约概率&#xff0c;HR可以直接在预约面试时&#xff0c;通过电话或短信等多种方式&#xff0c;与候选人进行沟通&#xff0c;确保对方完全清楚面试的时间、地点和流程。在双方沟通的过程中&#xff0c;HR一定要注意语气亲切&#xff0c;要让候选人感受到企业…

2020年中国海岸带10m土地覆盖图

2020年中国海岸带10m土地覆盖遥感图 数据介绍 土地利用/覆盖分类是研究海岸带动态变化过程、理解滨海社会-生态系统作用机制和支持可持续发展的重要基础。中国海岸带土地覆盖复杂多样&#xff0c;以往多类别地表覆盖和滨海湿地专题数据集难以兼顾陆域和海域信息&#xff0c;而…