当前位置:网站首页>feof它可不简单。
feof它可不简单。
2022-08-09 05:13:00 【潜水少年请求出战】
feof看见它我们脑海里立即浮现出,这不就是个用来判断文件结束的标志吗?
咳咳上面那张图~ 我就不说是谁了(就是作者本人自己);它这个差点坑了我。
可能它藏得比较深,就让我们一起康康。
正文:
牢记:在文件读取过程中,不能用feof函数的返回值直接用来判断文件的是否结束。
而是应用于当文件读取结束的时候,判断是读取失败结束,还是遇到文件尾结束。
方法:
1. 文本文件读取是否结束,判断返回值是否为 EOF ( fgetc ),或者 NULL ( fgets )
例如:
fgetc 判断是否为 EOF .
fgets 判断返回值是否为 NULL .
代码参上:#include<stdio.h> int main() { int c; FILE* fp = fopen("example.txt", "r"); if (!fp) { perror("File opening failed"); return 1; } //fgetc 当读取失败的时候或者遇到文件结束的时候,都会返回EOF。 while ((c = fgetc(fp)) != EOF) { putchar(c); } //判断是什么原因结束的。 if (ferror(fp)) puts("I/O error when reading"); else if (feof(fp)) puts("End of file reached successfully"); fclose(fp); fp = NULL; return 0; }
如果判断它是自动结束的 example.txt这个文件记着放一些东西。聪明如你,我就不演示了。
2. 二进制文件的读取结束判断,判断返回值是否小于实际要读的个数。
代码参上:
#include <stdio.h> enum { SIZE = 5 }; int main() { double a[SIZE] = { 1.,2.,3.,4.,5. }; //打开文件。 FILE* fp = fopen("test.bin", "wb"); // 必须用二进制模式 //写文件。 fwrite(a, sizeof * a, SIZE, fp); // 写 double 的数组 //关闭文件。 fclose(fp); double b[SIZE]; //读文件。 fp = fopen("test.bin", "rb"); size_t ret_code = fread(b, sizeof * b, SIZE, fp); // 读 double 的数组 if (ret_code == SIZE) { puts("数组读取成功,内容: "); for (int n = 0; n < SIZE; ++n) printf("%f ", b[n]); putchar('\n'); } else { // 错误处理。 if (feof(fp)) printf("读取 test . bin 时出错:即文件结尾\n"); else if (ferror(fp)) { perror("读取 test . bin 时出错"); } } fclose(fp); fp = NULL; }
没了,作者的内容也是有底线的——————————————————————————
边栏推荐
- Oracle01-安装与卸载
- What is it like to work at Kuaishou?
- 【HMS core】【Ads Kit】Huawei Advertising——Overseas applications are tested in China. Official advertisements cannot be displayed
- Faced with risk control, what should Amazon do when evaluating self-supporting accounts?
- 降压模块的使用
- 在快手工作是一种什么体验
- 剑指Offer-二叉树路径问题总结
- [Harmony OS] [ARK UI] ETS context basic operations
- 【ManageEngine】网络性能监控工具
- CSDN使用方法
猜你喜欢
Pycharm社区版专业版下载安装环境配置【精细到每一个步骤】
在快手工作是一种什么体验
Shell:数组和函数用法
Quantitative Genetics Heritability Calculation 2: Half Siblings and Full Siblings
不能提取结果集,SQL [n / a]; org.hibernate.exception.SQLGrammarExcept是嵌套的异常
UI框架布局
站点到站点的流量监控
deploy发布的jar包中文乱码
C语言之内存函数
Why do enterprises need business intelligence BI in the digital age
随机推荐
浅谈产品降本设计
IDEA05:线程管理
equals and ==
2022/08/08 学习笔记 (day25)File类
神经网络预测应力应变-单轴实验
Transaction rolled back because it has been marked as rollback-only
STM32定时器输入捕获频率(cube)
站点到站点的流量监控
力扣349-两个数组的交集——HashSet
降压模块的使用
C进阶 - 程序的编译(预处理操作) + 链接
Harmony OS ets ArkUI 】 【 】 development create a view and building layout
TP6的安装与测试
STM32学习笔记(PWM输出)
Shell:数组和函数用法
Pycharm社区版专业版下载安装环境配置【精细到每一个步骤】
【HMS core】【Ads Kit】华为广告——海外应用在国内测试正式广告无法展示
Zuul---路由功能
flask——介绍、安装、快速使用、配置文件、路由系统、视图
Oracle01-安装与卸载