当前位置: 首页 > news >正文

成全视频免费观看在线看ww自己搜20条优化措施

成全视频免费观看在线看ww,自己搜20条优化措施,推广网站怎么做知乎,石家庄品牌网站建设上篇博客字数到极限了,给大家把内容补充在这一篇,我们还剩下文件读取结束的判定和文件缓冲区的内容没有介绍,让我们开始下面的学习吧! 目录 1.文件读取结束的判定 1.1feof函数 1.2ferror函数 代码示例 2.文件缓冲区 2.1fflu…

上篇博客字数到极限了,给大家把内容补充在这一篇,我们还剩下文件读取结束的判定和文件缓冲区的内容没有介绍,让我们开始下面的学习吧!


目录

1.文件读取结束的判定

1.1feof函数

1.2ferror函数

代码示例

2.文件缓冲区

2.1fflush函数

代码示例


1.文件读取结束的判定

关于文件读取结束,它到底是遇到错误结束的还是遇到文件结束标志而结束的需要我们进行判断,此时,我们一般用到两个函数feof函数和ferror函数,让我们来认识一下它们

1.1feof函数

1.函数功能:测试流(文件流或者标准输出流)上的文件结尾

2.头文件:#include<stdio.h>

3.使用格式:int feof( FILE *stream );

4.返回值:

如果尝试读取超过文件末尾的第一次读取操作之后返回一个非零值

如果当前位置不是文件末尾,则返回0

5.但是在我们使用这个函数时,经常有同学错误使用它,归根到底,还是对这个函数不熟悉所导致的,这就需要我们沉下心来,好好看清楚它的具体使用方法

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

而是应该应用于当文件读取结束的时候,判断文件是因为读取失败结束还是遇到文件尾而结束

这也就是说,feof是来告诉你文件读取失败的原因的,而不是给你返回一个数值的

例如:

文本文件读取(输出)是否结束,若是使用fgetc函数要判断返回值是否为EOF

二进制文件的读取(输出)是否结束,若是使用fread函数,要判断它的返回值是否小于实际要读的个数

函数具体代码我们与ferror函数一起实现

1.2ferror函数

1.函数功能:测试流(文件流或者标准输出流)中的错误

2.头文件:#include<stdio.h>

3.使用格式:int ferror( FILE *stream );

4.返回值:

如果没有发生错误,ferror将返回0。

如果发生错误,它将返回一个非零值。

下面我们看段代码来加深理解

代码示例


//判断文本文件读取结束
int main()
{int c = 0;//以只读模式打开这个文本文件FILE* pf = fopen("test2.txt", "r");if (pf == NULL){perror("fopen");return 1;}//fgetc函数当读取文件失败或者遇到文件结束标志时,都会返回EOFwhile ((c = fgetc(pf)) != EOF){putchar(c);}printf("\n");if (ferror(pf))//文件读取失败遇到错误而结束printf("I/O error when reading");else if (feof(pf))//文件遇到结束标志而结束printf("End of file reached successfully");fclose(pf);pf = NULL;return 0;
}

运行结果

这就说明了,文件确实是因为遇到了文件结尾标志而结束的,而不是遇到了错误

我们总结一下:

feof:返回真,说明文件是正常遇到文件结束标志而结束的

ferror:返回真,说明是文件在读取过程中出错了而结束的

2.文件缓冲区

ANSIC标准采用“缓冲文件系统”来处理数据文件的

所谓缓冲文件系统是指系统自动的在内存中为程序中每一个正在使用的文件开辟一块“文件缓冲区”

从内存向磁盘输出(写入)数据,会先把数据送到内存中的缓冲区,当装满缓冲区后,再从缓冲区一起送到磁盘

从磁盘向计算机输入(读取)数据,会先从磁盘文件中读取数据输入到内存缓冲区,充满缓冲区后,再从缓冲区逐个的将数据送到程序缓冲区

此外,缓冲区的大小是根据C语言编译系统决定的

此时,我们就知道了

数据并不是直接就可以放到磁盘文件中的,只有满足

1.缓冲区放满

2.主动刷新缓冲区

这两种的其中一个才会把数据放到磁盘文件中

这就又引出了一个新的函数fflush,它就是用来刷新缓冲区的函数,此时,大家可能就又会有疑问了,我们前面所写的代码示例也没有出现fflush函数,为什么就被写入文件了,这是因为fclose函数在关闭文件时,也会刷新缓冲区

因为有缓冲区的存在,C语言在操作文件时,需要刷新缓冲区域或者在文件操作结束时关闭文件,如果不这样做,可能导致文件读写失败,数据丢失,此外,缓冲区的大小是可以修改的,我们在这里不做太多说明,以后遇到在进行讲解

2.1fflush函数

1.函数功能:刷新缓冲区

2.头文件:#include<stdio.h>

3.使用格式:int fflush( FILE *stream );

4.返回值:

刷新成功:返回值为0,在指定的流没有缓冲区或只打开进行读取的情况下,也会返回值0

刷新失败:返回值EOF

我们来看个例子加深理解

代码示例

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<errno.h>//测试缓冲区刷新函数int main()
{FILE* pf = fopen("test.txt", "w");if (pf == NULL){perror("fopen");return 1;}fputs("hello world\n", pf);//没有进行刷新,此时代码放在缓冲区printf("睡眠10s,我们已经写入数据了,打开对应的test.txt文件发现没有内容\n");Sleep(10000);printf("开始刷新缓冲区\n");fflush(pf);//此时,才将写入缓冲区的数据放到文件(磁盘)中printf("睡眠10s,此时,再次打开test.txt文件,文件中出现了被写入的内容\n");Sleep(10000);fclose(pf);//在关闭文件的同时,也会刷新缓冲区pf = NULL;return 0;
}

我们运行代码,它首先出现

然后我们打开对应文件,发现文件中确实没有内容,这也就证明了确实有缓冲区的存在

然后我们在返回程序代码运行窗口,此时出现提示

我们再次打开对应文件,发现文件中已经写入了内容


这就是C语言关于文件操作的全部内容了,这部分内容比较多,大家如果感兴趣的话,一定要戒骄戒躁,沉下心来认真学习,最重要的还是要多敲代码,巩固知识!

ok!大家下期再见!!!

http://www.hengruixuexiao.com/news/34375.html

相关文章:

  • 免费手机网站建设百度贴吧入口
  • 做软装设计能用到的网站有哪些信息流广告代运营
  • asp做的网站数据库在哪里天津seo招聘
  • 重庆网站制作套餐公众号代运营
  • 做标签网站是干嘛的网站建设开发价格
  • 石景山网站制作案例东莞企业网站排名优化
  • 阳西哪里有做网站如何做好一个网站
  • 上海松江做网站建设怎么样做一个自己的网站
  • 浙江网站建设哪家好深圳广告公司
  • 网站怎么做扫码微信支付接口常州网站建设制作
  • 营销网站如何实现差异化网络推广图片大全
  • 网站怎样续费啥是网络推广
  • dw旅游网站怎么做网站seo关键词排名优化
  • 容桂营销网站建设引擎seo优
  • 建站之星破解版网络营销公司业务范围
  • 网站开发助理好吗seo学徒招聘
  • 本地人wordpress怎么同步到服务器seo推广软件哪个好
  • 固始网站建设推广码怎么填
  • 长治网站制作的网站微信管理系统登录
  • 临泉建设网站最新搜索引擎排名
  • 网站显示速度的代码是什么情况网站关键词排名
  • 衡水城乡建设局网站首页手机怎么建立网站
  • 高端网站设计哪里比较好一站式快速网站排名多少钱
  • 深圳正规网站开发团队企业查询天眼查
  • 自动化产品的网站建设推广优化方案
  • 茂名网站制作维护网络营销考试答案
  • 向祖国建设者致敬网站杨谦教授编的营销课程
  • 电商网站的制作网络营销包括哪些
  • 前端效果网站武汉新闻最新消息
  • 沈阳做网站客户多吗全面网络推广营销策划