C语言--文件操作详解(2)(文本文件和二进制文件,文件读取结束的判定,用函数进行文件的拷贝,文件缓冲区)

这篇具有很好参考价值的文章主要介绍了C语言--文件操作详解(2)(文本文件和二进制文件,文件读取结束的判定,用函数进行文件的拷贝,文件缓冲区)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

本篇文章主要介绍了文本文件和二进制文件,文件读取结束的判定,如何使用函数进行文件的拷贝,文件缓冲区的相关知识。

以及具有保存功能的八功能通讯录的源码。


1.文本文件和二进制文件

据数据的组织形式,数据文件被称为文本文件或者二进制文件。
①数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件。
②如果要求在外存上以ASCII码的形式存储,则需要在存储前转换。以ASCII字符的形式存储的文件就是文本文件
C语言--文件操作详解(2)(文本文件和二进制文件,文件读取结束的判定,用函数进行文件的拷贝,文件缓冲区),C语言知识点,c语言,开发语言
用fwrite函数写一个二进制的文本。

#include <stdio.h>
int main()
{
int a = 10000;
FILE* pf = fopen("test.txt", "wb");
fwrite(&a, 4, 1, pf);//二进制的形式写到文件中
fclose(pf);
pf = NULL;
return 0;
}

C语言--文件操作详解(2)(文本文件和二进制文件,文件读取结束的判定,用函数进行文件的拷贝,文件缓冲区),C语言知识点,c语言,开发语言
可以看到我们文件中的信息是二进制形式,我们看不懂。
但是VS是可以看懂二进制文件的!
C语言--文件操作详解(2)(文本文件和二进制文件,文件读取结束的判定,用函数进行文件的拷贝,文件缓冲区),C语言知识点,c语言,开发语言
C语言--文件操作详解(2)(文本文件和二进制文件,文件读取结束的判定,用函数进行文件的拷贝,文件缓冲区),C语言知识点,c语言,开发语言
C语言--文件操作详解(2)(文本文件和二进制文件,文件读取结束的判定,用函数进行文件的拷贝,文件缓冲区),C语言知识点,c语言,开发语言

2.文件读取结束的判定

2.1 被错误使用的feof

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

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

  1. 文本文件读取是否结束,判断返回值是否为 EOF ( fgetc ),或者 NULL ( fgets )
    例如:
    fgetc 判断是否为 EOF .
    fgets 判断返回值是否为 NULL .

  2. 二进制文件的读取结束判断,判断返回值是否小于实际要读的个数。
    例如:
    fread判断返回值是否小于实际要读的个数。
    补充说明:fread要求读取count个大小为size字节的数据,如果真的读取到count个数据,函数返回count。如果没有读取到count个数据,返回的是真实的读取到的完整的数据个数。

2.2 ferror与feof

ferror: 在文件读取结束后,用来判断文件是否因为读取过程中遇到错误而结束!
feof:在文件读取结束后,用来判断文件是否因为读取过程中遇到文件结束标志而结束!

3 如何用函数进行文件的拷贝

int main()
{
	FILE* pfread = fopen("data1.txt", "r");
	if (pfread == NULL)
	{
		perror("fopen");
		return 1;
	}
	FILE* pfwrite = fopen("data2.txt", "w");
	if (pfwrite == NULL)
	{
		perror("fopen");
		fclose(pfread);//如果第二个文件打开失败,那么第一个文件打开就没有意义,所以关掉第一个文件
		pfread = NULL;
		return 1;
	}
	//拷贝数据
	int ch = 0;
	while ((ch = fgetc(pfread)) != EOF)
	{
		fputc(ch, pfwrite);
	}

	fclose(pfread);
	pfread = NULL;
	fclose(pfwrite);
	pfwrite = NULL;

	return 0;
}

C语言--文件操作详解(2)(文本文件和二进制文件,文件读取结束的判定,用函数进行文件的拷贝,文件缓冲区),C语言知识点,c语言,开发语言

4.文件缓冲区

ANSIC 标准采用“缓冲文件系统”处理的数据文件的,所谓缓冲文件系统是指系统自动地在内存中为程序中每一个正在使用的文件开辟一块“文件缓冲区”。从内存向磁盘输出数据会先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘上。如果从磁盘向计算机读入数据,则从磁盘文件中读取数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(程序变量等)。缓冲区的大小根据C编译系统决定的。
C语言--文件操作详解(2)(文本文件和二进制文件,文件读取结束的判定,用函数进行文件的拷贝,文件缓冲区),C语言知识点,c语言,开发语言

因为有缓冲区的存在,C语言在操作文件的时候,需要做刷新缓冲区或者在文件操作结束的时候关闭文件。如果不做,可能导致读写文件的问题。

5.文件操作改造通讯录(具有保存功能)

链接: 八通能通讯录

这是我们前面写了通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加、删除数据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行通讯录程序的时候,数据又得重新录入,如果使用这样的通讯录就很难受。

我们在想既然是通讯录就应该把信息记录下来,只有我们自己选择删除数据的时候,数据才不复存在。这就涉及到了数据持久化的问题,我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据库等方式。使用文件我们可以将数据直接存放在电脑的硬盘上,做到了数据的持久化。

代码在我的gitee中。
链接: 保存功能八功能通讯录文章来源地址https://www.toymoban.com/news/detail-716368.html

到了这里,关于C语言--文件操作详解(2)(文本文件和二进制文件,文件读取结束的判定,用函数进行文件的拷贝,文件缓冲区)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java中读取二进制文件

    读写二进制文件常用的类有DataInputStream和DataOutputStream。         利用DataInputStream类读二进制文件,其实与利用FileInputStream类读文本文件及其相似,也要用到FileInputStream类关联二进制文件。具体操作步骤如下:         1)导入相关的类                 import ja

    2023年04月08日
    浏览(30)
  • VBA下载二进制文件,文本读写

    这里使用了vba如下两个对象: Microsoft.XMLHTTP :文件读写,可读写二进制,可指定编码,对于utf-8编码文本文件使用FSO的TextStream对象打开,读取到的内容可能会出现乱码,可以使用该对象打开;前期绑定添加引用: Microsoft ActiveX Data Objects 2.8 Microsoft.XMLHTTP :发送请求并获得返回,

    2024年02月16日
    浏览(44)
  • 5.7:Python如何读取二进制文件?

    随着信息技术的不断发展,二进制数据已经成为了现代计算机应用中不可或缺的一部分。在许多情况下,我们需要读取和处理二进制数据,这些数据可能包括图像、音频、视频、压缩文件等。Python作为一种流行的编程语言,提供了多种方法和库,可以帮助我们读取和处理各种

    2024年02月06日
    浏览(37)
  • 肉眼无法读懂是二进制独有的浪漫——一篇博客学懂文件操作(C语言)

    目录 一、为什么使用文件 二、什么是文件 2.1程序文件 2.2数据文件 2.3文本文件和二进制文件 2.4文件名 三、文件的打开和关闭 3.1 文件指针 3.2 文件的打开和关闭 3.3文件的顺序读写函数 3.3.1流的概念 3.3.2输入输出的概念  3.3.3函数操作 3.4文件的随机读写函数 3.4.1fseek 3.4.2 fte

    2024年02月06日
    浏览(32)
  • Python读取二进制文件:深入解析与技术实现

    目录 一、引言 二、二进制文件的基础 1、二进制文件的组成 2、二进制文件的编码 三、Python读取二进制文件的方法 1、使用内置函数open() 2、使用numpy库 四、处理读取的二进制数据 1、解析数据 2. 转换数据类型 五、总结与展望 1、高效读取二进制文件 2、处理复杂的二进制文件

    2024年02月04日
    浏览(33)
  • Vue 读取后台二进制文件流转为图片显示

    Vue 读取后台二进制文件流转为图片显示 后台返回格式 axios写法 重点 responseType: ‘blob’ , 使用的是res中的data blob 本文章参考 https://huaweicloud.csdn.net/63a56170b878a545459459f2.html

    2024年04月11日
    浏览(27)
  • pyqt5:python读取二进制文件(音频PCM文件)显示波形

    有个项目需要输出10-50Hz的低频信号驱动线圈,考虑使用音频功放硬件,所以做这方面的预研。 参考文章: 作者:很久没安静的回忆了,文章:音频 PCM 详解 作者:怪我冷i,文章:音视频从入门到精通——FFmpeg分离出PCM数据实战 3.作者:cuijiecheng2018,文章:windows下使用FFmp

    2023年04月21日
    浏览(26)
  • 【初阶C语言】操作符1--对二进制的操作

    前言:本节内容介绍的操作符,操作的对象是二进制位。所以前面先介绍整数的二进制位 1.二进制介绍 (1)整数的二进制表示形式有三种:原码、反码和补码。 (2)原码、反码和补码的长度有数据类型来决定,如整数,就是四个字节,转化后是三十二位比特位,所以一个整

    2024年02月09日
    浏览(30)
  • git中某些二进制文件无法合并,怎么操作pull更新

    当在Git中进行`pull`操作时,如果遇到某些二进制文件无法合并的情况,通常会导致冲突。 1. 首先,运行`git status`命令,查看哪些文件存在冲突。   2. 打开冲突的文件,正常情况下,.h或者.cpp文件,你会看到类似下面的内容:    ```     HEAD    // 本地版本的内容    =======  

    2024年01月18日
    浏览(30)
  • 【嵌入式烧录/刷写文件】-3.1-详解二进制Bin格式文件

    目录 1 什么是bin 2 bin文件的结构 3 如何打开bin文件 3.1 使用Vector HexView工具打开 3.2 使用Notepad++工具打开 3.3 使用Binary Viewer工具打开 结尾 优质博文推荐阅读(单击下方链接,即可跳转): 点击返回「《Autosar从入门到精通-实战篇》总目录」 点击返回「《Autosar_BSW高阶配置》总

    2024年02月08日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包