C语言进阶 文件操作知识(上)

简介: C语言进阶 文件操作知识(上)

一. 为什么使用文件


我们在前面学习完结构体开始写通讯录的时候 当通讯录运行起来我们可以给它传输数据 此时数据是存放在内存中 当程序退出的时候 通讯录中的数据自然也就不复存在了

如果我们想要对于输入的数据进行持久化保存 这个时候我们就可以想到把数据存放在磁盘文件 存放在数据库等方式


所以说我们使用文件是为了数据的持久化保存


二. 什么是文件


我们在讨论文件的时候一般有两种 一种是程序文件 一种是数据文件


2.1 程序文件


包括源程序文件 目标文件 可执行文件



我依次截图给大家看看

2ae9ce8a000447e9854415338b75f3dc.png

源程序文件


目标文件

ad9538f30771493aabca4397a7825358.png


可执行文件

94a909a5f92748d8a2dcdff6c3f962d2.png



2.2 数据文件


文件的内容不一定是程序 也可以是程序运行时读写的数据 比如程序运行所需要读取数据的文件 或输出内容的文件


我们本章着重讨论数据文件

dfb08d78d25d42b69969d5fb4709efe2.png



2.3 文件名


一个文件要有一个唯一的文件标识 以便于用户的识别和引用


文件名通常包含三部分 文件路径+文件名主干+文件后缀


例如 c:\code\test.txt


不知道这里大家还记不记得以前讲的转义字符的事


转义字符相关知识


如果我们要在c语言程序内使用的话 应该是这么打出来


c:\code\test.txt


三. 文件的打开和关闭


3.1 文件指针


缓冲文件系统中 关键的概念是“文件类型指针” 简称“文件指针”


我们先不看定义 直接开始用


96fccbc40c604a07868c22c5f99f0a53.png


我们说 形如


FILE* pf
• 1


这种格式 我们就把它称为文件指针 它指向一个文件


我们通过文件指针变量就能够找到与它关联的文件


f5d1d6e17f6040f7a1161a7070942836.png

3.2 文件的打开和关闭


我们在读写文件之前应该打开它 在使用结束之后应该关闭它


当文件读取失败的时候 它会返回一个空指针


直接上代码


814f9effaa6f4636b2aaaa9b37213f48.png


当为r模式的时候 如果没有文件 则会返回一个空指针 并且会报错误信息


ac646f9d524541c0a34c43442dce54a8.png


但是当为w或者a模式的时候 如果不存在这个文件 就会自己新建一个 并且不会报错误信息


四. 文件的顺序读写


功能 函数名 适用于

字符输入函数 fgetc 所有输入流

字符输出函数 fputc 所有输出流

文本行输入函数 fgets 所有输入流

文本行输出函数 fputs 所有输出流

格式化输入函数 fscanf 所有输入流

格式化输出函数 fprintf 所有输出流

二进制输入 fread 文件

二进制输出 fwrite 文件


我们还是直接上代码来看效果


b60d8ffe31444ae480e12fbc146b9c9d.png


c52dd7fec4af4d5284da2221c29878d1.png


ad60c2666923428c8ab54d2ac7c6882a.png


那这次我们尝试从数据文件输入


f6e5f814cd3f4f7cba9b158c875a705f.png


当然啦 我们这里记得要改为只读模式 不然就会没办法读取数据


fputs 输出一行字符串


1f7801819461445898dc4d3c2cb90cc6.png


fgets 读取一行字符串


4d3f8a8a6f6e4b29a022190618efd8b3.png


这里要注意的是gets的读取格式有点特殊 是这样子的


a8ea9114f5f043ef87f281623bd6f32d.png


五. 文件的随机读写


5.1 fseek


根据文件指针的位置和偏移量来定位文件指针


int fseek ( FILE * stream, long int offset, int origin );


de463af533bc4a8db75de4b5a8f3c9a5.png


这里就是个很好的例子


定位到偏移量为9的位置 也就是n的位置上 替换成 “ sam”


5.2 ftell


返回文件指针相对于起始位置的偏移量


long int ftell ( FILE * stream );
• 1


5.3 rewind


让文件指针的位置回到文件的起始位置


void rewind ( FILE * stream );
• 1


这个很简单 记住指针回到了起始位置就好


以上就是本篇博客的全部内容啦 由于博主才疏学浅 所以难免会出现纰漏 希望大佬们看到错误之后能够


不吝赐教 在评论区或者私信指正 博主一定及时修正


那么大家下期再见咯

相关文章
|
15天前
|
存储 程序员 C语言
C语言-文件操作
C语言-文件操作
45 2
|
28天前
|
安全 算法 程序员
【C/C++ 文件操作】深入理解C语言中的文件锁定机制
【C/C++ 文件操作】深入理解C语言中的文件锁定机制
31 0
|
1月前
|
存储 编译器 Linux
c语言进阶(2)
c语言进阶(2)
26 0
|
1月前
|
存储 编译器 数据库
【文件操作】C语言
【文件操作】C语言
|
1月前
|
C语言
【进阶C语言】数组笔试题解析
【进阶C语言】数组笔试题解析
17 0
|
1月前
|
C语言
C语言文件操作
C语言文件操作
17 0
C语言文件操作
|
1月前
|
C语言
C语言文件操作
C语言文件操作
|
16天前
|
存储 程序员 编译器
【C语言】深度探讨文件操作(一)
【C语言】深度探讨文件操作(一)
|
16天前
|
存储 测试技术 C语言
【C语言进阶】 假期测评③
【C语言进阶】 假期测评③
41 1
|
21天前
|
Linux 测试技术 C语言
【Linux】应用编程之C语言文件操作
【Linux】应用编程之C语言文件操作