【C语言】文件操作

目录

为什么要使用文件?

文件的概念

数据文件

程序文件

文件名 

文件的使用

文件类型指针(以下称为文件指针) 

文件的打开和关闭

fopen函数的使用

fclose函数的使用 

文件的打开方式 

文件的顺序读写 

一组函数的对比 

文件的随机读写 

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

ftell函数(返回文件指针相对于起始位置的偏移量) 

rewind函数(让文件指针的位置回到文件的起始位置)

 ​编辑

文本文件和二进制文件

二进制文件

文本文件 

文件读取结束的判定 

feof函数

文本文件结束的判定 

二进制文件的结束的判定 

总结 


 

为什么要使用文件?

文件可以将数据存存放在电脑的硬盘上面,达到长期存储该数据的目的。

比如在之前写的通讯录程序中,我们没有使用文件或者数据库用来存储我们之前输入过的信息,这就导致我们每次使用通讯录都得重新输入一遍信息,这是非常不符合通讯录的使用要求的。http://t.csdn.cn/O6R62http://t.csdn.cn/O6R62

文件的概念

在程序设计中,我们所称的文件分为两类,一类是程序文件,另一类是数据文件。 

数据文件

主要是源程序文件、目标文件、可执行程序。  

程序文件

程序中需要从中读取数据或者是向其输出内容的文件。 

文件名 

一个文件要有一个位移的文件标识,为了方便我们将这个文件表示称为文件名。

文件名主要包含三个部分:文件路径+文件名主干+文件后缀

文件的使用

想要将内容输出到文件中或者想要从文件中读取内容,必要的一步就是打开文件。

文件类型指针(以下称为文件指针) 

每一个被打开的文件都会在内存中开辟一个相应的文件信息区,用来存放文件的相关信息(如文件名、文件状态、文件当前位置)。这些信息都是保存在一个由系统声明的结构以变量中,该结构体类型为:FILE。

为了对文件进行操作,需要一个指向上述结构体类型的指针(FILE* pf)来维护文件信息去,从而对文件进行操作。

文件的打开和关闭

文件的打开和关闭需要借助两个函数,一个是打开文件:fopen函数,另一个是关闭文件:fclose函数。 

fopen函数的使用

查表可知,当文件正常打开时,返回的是指向该文件的指针,打开失败时会返回空指针。其参数分别为要打开的文件名,文件的打开方式。所以在打开文件的时候需要判断函数是否打开成功。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main()
{
	FILE* pf=fopen("abc.txt", "rb");
	if (pf == NULL)
	{
		perror("fopen:");
	}
	else
	{
		printf("打开成功\n");
	}
	return 0;
}

fclose函数的使用 

fclose的参数为要关闭文件的地址。在使用完文件之后,我们要记得及时关闭文件,防止文件被意外更改。同时要将指向文件的指针置为空指针,防止出现野指针的问题。

fclose(pf);
	pf = NULL;

文件的打开方式 

“r” 以"读"的方式打开一个文本文件(只能读)。
“r+” 与"r"的区别在于可以"写"。
“rb” 打开一个二进制文件(只能读)。
“rb+” 与"rb"的区别在于可以"写"。
“w” 以"写"的方式创建一个文本文件,如果这个文件已经存在,就会覆盖原来的文件。
“w+” 与"w"的区别在于,增加了"读"。
“wb” 以"写"的方式创建一个二进制文件。
“wb+” 与"wb"的区别在于,增加了"读"。
“a” 以"尾部追加"的方式打开一个文本文件(只能写)。
“a+” 与"a"的区别在于,增加了"读"。
“ab” 以"尾部追加"的方式打开一个二进制文件(只能写)。
“ab+” 与"ab"的区别在于,增加了"读"。

文件的顺序读写 

一些关于文件的常见函数

功能函数名适用于
字符输入函数fgetc所有输入流
字符输出函数fputc所有输出流
文本行输入函数fgets所有输入流
文本行输出函数fputs所有输出流
格式化输入函数fscanf所有输入流
格式化输出函数fprintf所有输出流
二进制输入fread文件
二进制输出fwrite文件

一组函数的对比 

scanf针对标准输入流的格式化输入语句
fscanf针对所有输入流的格式化输入语句
sscanf从一个字符串中读取一个格式化数据
printf针对标准输出流的格式化输出语句
fprintf针对所有输出流的格式化输出语句
sprintf将一个格式化数据转换成一个字符串

文件的随机读写 

我们肯定想要随心所欲地修改文件,这就需要用到一些实现文件的随机读写的函数。

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

查表可以知道,参数分别是文件流,偏移量,起始位置。

其中,对于起始位置,我们常用三个参数(seek_set开始位置\seek_cur当前位置\seek_end结束位置) 

ftell函数(返回文件指针相对于起始位置的偏移量) 

参数就是指向要使用文件的指针。 

rewind函数(让文件指针的位置回到文件的起始位置)

 

 参数就是指向要使用文件的文件指针。

文本文件和二进制文件

根据数据文件的组织形式,数据文件分为二进制文件和文本文件两种。 

二进制文件

数据在内存中是以二进制形式存储的,如果不加转换就输出到文件中,则该文件称为二进制文件。

文本文件 

如果在存储在文件时采用的是ASCII字符形式存储的就称为文本文件。

文件读取结束的判定 

判断一个文件是否结束、判断一个文件是否是正常结束,都需要用到一些函数。

feof函数

feof函数通常使用在文件已经结束时,用于判断是由于读取失败结束还是由于遇到文件末尾结束。

文本文件结束的判定 

如果文本文件结束的话,对于fgetc函数的返回值是EOF,对于fgets函数的返回值是NULL

二进制文件的结束的判定 

fread判断返回值是否小于实际要读的个数。.

总结 

介绍了文件的概念,文件的打开与关闭及相关函数,文本文件和二进制文件、文件的结束标志、文件的分类、文件的顺序读写于随机读写

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值