【C标准库】详解feof函数与EOF
创作不易,多多支持!
再说此函数之前,先来说一下EOF是什么
EOF,为End Of File的缩写,通常在文本的最后存在此字符表示资料结束。
在C语言中,或更精确地说成C标准函式库中表示文件结束符。这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志
- 一般结尾都有一个隐藏字符”EOF”,当程序读取它的时候,就会知道文件已经到达结尾
可以理解为EOF是文本文件的结束标识,

注意:此时的text.txt文件内容为空
相信看到这里,我们基本了解了EOF!
feof
头文件:stdio.h
它是什么?
是检测流上的文件结束符的函数,如果文件结束,则返回非0值,否则返回0
一般文件操作结束后,需要使用feof来判定是不是到达了文件末尾(eof)而结束的。
声明:
int feof(FILE *stream);
参数:
stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了流。
返回值:
如果碰到eof而结束返回非0值,否则返回0。
操作实例:
- 注意:此时你的项目工程里面必须有一个text.txt的文件!
#include<stdio.h>
int main()
{
int ch = 0;
FILE* pf = fopen("text.txt", "r");
if (pf == NULL)
{
perror("open file text.txt");
return 0;
}
while ((ch = fgetc(pf)) != EOF)
{
putc(ch,stdout);
}
printf("\n");
if (ferror(pf))
{
printf("读取文件:text.txt时发生错误\n");
}
else if (feof(pf))
{
printf("已到达文件结束处end of file\n");
}
fclose(pf);
pf = NULL;
return 0;
}
牢记:在文件读取的过程中,不能用feof函数的返回值直接用来判断文件的是否结束。而是应用于当文件读取结束的时候,判断是读取失败而结束,还是遇到文件尾结束!
以上代码均在vs2022环境下编译
【C标准库】详解feof函数与EOF的更多相关文章
- php中的PDO函数库详解
PHP中的PDO函数库详解 PDO是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,PDO让跨数据库的使用更具有亲和力:与ADODB和MDB2相比,P ...
- STM32固件库详解
STM32固件库详解 emouse原创文章,转载请注明出处http://www.cnblogs.com/emouse/ 应部分网友要求,最新加入固件库以及开发环境使用入门视频教程,同时提供例程模板 ...
- MySQL5.6的4个自带库详解
MySQL5.6的4个自带库详解 1.information_schema详细介绍: information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式.什么是元数据呢?元数 ...
- Lua的协程和协程库详解
我们首先介绍一下什么是协程.然后详细介绍一下coroutine库,然后介绍一下协程的简单用法,最后介绍一下协程的复杂用法. 一.协程是什么? (1)线程 首先复习一下多线程.我们都知道线程——Thre ...
- Python--urllib3库详解1
Python--urllib3库详解1 Urllib3是一个功能强大,条理清晰,用于HTTP客户端的Python库,许多Python的原生系统已经开始使用urllib3.Urllib3提供了很多pyt ...
- 详解JMeter函数和变量(转载)
详解JMeter函数和变量(1) JMeter函数可以被认为是某种特殊的变量,它们可以被采样器或者其他测试元件所引用.函数调用的语法如下: ${__functionName(var1,var2,var ...
- VMware 虚拟化编程(7) — VixDiskLib 虚拟磁盘库详解之三
目录 目录 前文列表 VixDiskLib 虚拟磁盘库 VixDiskLib_GetMetadataKeys VixDiskLib_ReadMetadata 获取虚拟磁盘元数据 VixDiskLib_ ...
- VMware 虚拟化编程(6) — VixDiskLib 虚拟磁盘库详解之二
目录 目录 前文列表 VixDiskLib 虚拟磁盘库 VixDiskLib_Open 打开 VMDK File VixDiskLib_Read 读取 VMDK File 数据 VixDiskLib_ ...
- 最强常用开发库总结 - JSON库详解
最强常用开发库总结 - JSON库详解 JSON应用非常广泛,对于Java常用的JSON库要完全掌握.@pdai JSON简介 JSON是什么 JSON 指的是 JavaScript 对象表示法(Ja ...
随机推荐
- Linux系列之安装中文字体
Linux系统安装中文字体 拷贝字体文件至Linux 从windows电脑的C:\Windows\fonts复制字体文件上传至Linux服务器新建的目录下 复制ttc.ttf文件至Linux服务器字体 ...
- 用python这样做,offer还不是拿到手软?
大家好鸭,我是小熊猫 本篇代码提供者: 自游老师 老师简介:青灯教育金牌讲师3年Python爬虫开发经验七年在线教育经验擅长Python.c等语言曾任职多家互联网公司爬虫工程师.Python讲师 [环 ...
- namespace_std 杂题选讲
CF1458C Latin Square 2021 EC Final C. Random Shuffle [THUPC2021] 混乱邪恶 [JOISC2022] 制作团子 3 2022 集训队互测 ...
- Jira7.3.8环境搭建
安装JDK sudo apt-get install openjdk-8-jdk 安装&配置MySQL sudo apt-get install mysql-server 创建jira用户 # ...
- gpg加解密异常
在本地windows电脑和开发环境(linux) ,都不报错,但是在测试环境(linux) 上报错. 报错信息 org.bouncycastle.openpgp.PGPException: Excep ...
- 07 MySQL_SQL数据类型
数据类型 整数类型: int(m) 对应java中的int bigint(m) 对应java中的long m代表显示长度,需要结合 zerofill使用 create table t_int(id i ...
- Hadoop-HA 搭建高可用集群Hadoop Zookeeper
Hadoop Zookeeper 搭建(一) 一.准备工作 VMWARE虚拟机 CentOS 7 系统 虚拟机1:master 虚拟机2:node1 虚拟机3:node2 时间同步 ntpdate n ...
- logrotate command in Linux
背景 在生产过程中,由于磁盘空间.保留周期等因素,会对系统.应用等日志提出要求,要求系统日志定期进行轮转.压缩和删除,从而减少开销,而系统自带的logrotate 则是一个简单又实用的小工具,下面着 ...
- js基础学习-数组
let arr1 = [ {name: 1} ] let arr2 = [ {age: 23} ] let ages = [11, 22, 23] let newArr = arr1.concat(a ...
- 简单的数据结构_via牛客网
题面 链接:https://ac.nowcoder.com/acm/contest/28537/K 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语 ...