| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 文件操作(C语言) -> 正文阅读 |
|
[C++知识库]文件操作(C语言) |
文件操作(C语言)为什么使用文件在前面的学习中,我们写了通讯录的小程序[通讯录小程序],但是会存在一个问题,就是每次关闭程序,通讯录中的信息就会删除(内存还给操作系统),因此我们要保存通讯录中的信息就需要将信息放在文件中,实现持久化。 什么是文件磁盘上的文件就叫做文件。但是在程序设计中,我们一般谈两种文件:程序文件、数据文件(从文件的功能角度来分类)。 程序文件
我们写代码中,会创建源代码:test.c,自定义头文件:test.h,可执行文件:test.exe(小黑框)。这些都是程序文件。 数据文件
我们写代码会将一些数据写进文件中,或者将文件读进程序中,这里涉及的文件都是数据文件。 文件名一个文件要有一个唯一的文件标识,以便用户识别和引用。 文件的打开和关闭文件指针缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针”。 什么意思呢? 当我们操作文件data.txt时,我们需要先打开文件,再打开文件的同时,系统会自动创建一个结构体struct FILE,这个结构体所开辟的内存叫做文件信息区,里面有刚才data.txt中的相关信息,同时返回一个指针对该文件信息区进行操作,这时文件信息区就跟该文件形成了联系,我们对文件信息区进行操作,就会对该文件进行操作。 文件的打开和关闭文件在读写之前应该先打开文件,在使用结束之后应该关闭文件。在编写程序的时候,在打开文件的同时,都会返回一个FILE*的指针变量指向该文件,也相当于建立了指针和文件的关系。ANSIC 规定使用fopen函数来打开文件,fclose来关闭文件。 文件打开——fopen()函数形式:FILE *fopen( const char *filename, const char *mode ) 文件关闭——fclose()函数形式:int fclose( FILE *stream )
当我们打开一个文件返回指针时,我们要进行判断,此时的指针是否为空指针,如果不为空指针,可以进行后续的操作,当关闭文件时,同样需要将指针置为空指针,防止对野指针的使用。 文件的顺序读写
以fputc()输出函数举例:
文件的随机读写fseek()函数作用:根据文件指针的位置和偏移量来定位文件指针。
举个例子:
ftell()函数作用:返回文件指针相对于起始位置的偏移量
前面的代码跟刚才的一样,当打印b后,此时的pf指针指向c,int ret = ftell(pf)计算此时的指针距离起始位置的偏移量,c距离起始位置的偏移量为2,所以打印结果为“2”。 rewind()函数作用:让文件指针的位置回到文件的起始位置
前面的代码跟上面的一样,rewind(pf)函数使用后,此时的文件指针回到文件开头位置。 文本文件和二进制文件根据数据的组织形式,数据文件被称为文本文件或者二进制文件。 文件读取结束的判定关于文件读取结束的判定需要了解两个函数:feof()函数和ferror()函数,我们在读取文件的时候,会经历文件读取结束或者文件读取失败,这时候就需要判断是文件读取失败,还是文件读取结束,而判定就需要用到这两个函数:
文件缓冲区ANSIC标准采用“缓冲文件系统”处理的数据文件的,所谓缓冲文件系统是指系统自动地在内存中为程序中每一个正在使用的文件开辟一个“文件缓冲区”。从内存向磁盘输出数据会先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘上。如果从磁盘向计算机读入数据,则从磁盘文件中读取数据输入到内存缓冲区(充满缓冲区),然后在从缓冲区逐个地将数据送到程序数据区。 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 1:06:40- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |