文件操作基础知识和文件操作函数

目录

文件的作用

什么是文件

1、程序文件

2、数据文件

3、文件名

文件的打开与关闭

1、文件指针

2、文件的打开(fopen)和关闭(fclose)

文件的顺序读写

文件的随机读写

文本文件和二进制文件

文件读取结束的判断

文件的缓冲区


文件的作用

当我们编译器上编写程序运行之后,只要我们关闭了这个这个程序那么这个程序所产生的数据将会被清除,这是因为我们运行程序的时候是在内存中运行的,当程序关闭的时候,数据也就没了没有保存在像硬盘这样的外部存储设备中,所以我们可以通过文件操作将这些数据存储到文件中,也就是存储在电脑的硬盘

什么是文件

指的是硬盘当中可以存储数据的文件

我们程序设计的文件可以分为两种

1、程序文件

用来运行程序的文件

包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)

2、数据文件

程序运行过程中用来读取或者传输数据的文件

3、文件名

一个文件要有一个特定的文件标识,以便用户识别和引用

为了方便起见,文件标识符通常被称为文件名

文件名由三部分组成:文件路径+文件名主干+文件后缀

分为绝对路径和相对路径

绝对路径:一个完整的路径

例如:C:\Users\fmshixiang\Desktop\c\2022_4_2\2022_4_2\test.c以根目录为起始位置的路径

相对路径:相对某个基准目录的路径

例如:2022_4_2\2022_4_2\test.c从这个文件开始的位置开始

根目录的一些使用命令

/           代表这个文件所处于的根目录,会返回根目录,再从根目录寻找下一个路径

./          代表这个文件所处的目录,从当前路径寻找下一个路径

../         代表上一层目录,会返回上一层菜单,再从上一层菜单寻找下一个路径

注意事项:文件的后缀名决定了一个文件的默认打开方式
文件名中可以不包含后缀名

文件的打开与关闭

1、文件指针

每个被使用的文件系统都为在内存中开辟一个相应的文件信息区,来用来存放文件的信息,这些信息被储存在结构体变量中,被系统声明为FILE

当我们打开一个文件的时候,系统会自动创建一个FILE类型的指针,我们就可以通过这个指针来操作文件

	FILE* fp;	//创建一个文件指针

2、文件的打开(fopen)和关闭(fclose)

在我们读写文件之前我们需要打开文件,在我们不需要读写的时候我们需要关闭文件

我们需要使用fopen和fclose两个函数,在以下文章中有详细介绍

fopen和fclose函数的使用_一起慢慢变强的博客-CSDN博客

实际操作:

#include<stdio.h>

int main()
{
	FILE* fp = fopen("data.txt", "w");	//创建一个文件指针,以w(可写入)的方式打开data.txt这个文件,使用的是相对路径
	if (fp != NULL)	//判断是否开辟成功
	{
		fclose(fp);	//关闭程序
	}
	return 0;
}

文件的顺序读写

顺序读写就是从文件的起始位置开始读取内容,使用到了以下的函数

详情看这篇博客

c语言中文件顺序读写的函数_一起慢慢变强的博客-CSDN博客

文件的随机读写

随机读写是自己定义想要从文件哪个位置开始进行读取内容,使用到了以下的函数

详情看这篇博客

c语言中文件随机读写的函数_一起慢慢变强的博客-CSDN博客

文本文件和二进制文件

文本文件:以assic码值存储的文件就是文本文件
二进制文件:以二进制形式存储的文件就是二进制文件

数据如何存储?

字符以assic码值进行存储,数值以二进制进行存储

一般而言,二进制文件比文本文件更节省空间

文件读取结束的判断

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

2. 二进制文件的读取结束判断,判断返回值是否小于实际要读的个数

如何怕判断是文件读取失败结束,还是文件读取到文本末结束?

可以使用feof函数来进行判断

以下为feof的使用详情

feof函数的使用_一起慢慢变强的博客-CSDN博客

文件的缓冲区

文件在被处理的时候,会经过文件缓冲区,每一个被打开的文件都会被系统开辟一块空间(文件缓冲区)从内存向硬盘读取数据或者从硬盘想内存输入数据

只有当缓冲区刷新,或者文件操作结束时候关闭文件,数据才会被完整的读取进文件,否则可能发生读取写入不完整的情况出现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一起慢慢变强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值