文件的操作与文件操作函数

一.文件的打开与关闭

1.文件指针

每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统声明的,取名FILE。

2.文件的打开与关闭

打开文件:用fopen函数打开文件,第一个参数是打开的文件路径,第二个参数是打开方式

 用一个FILE变量pf接收fopen函数,但是有可能会接收失败,pf置为空指针,所以为了避免出现这种错误,都需要在打开文件后判断pf是否为空指针,如果为空则直接显示错误并返回。

关闭文件:使用fclose函数关闭文件,参数为打开文件的FILE的变量pf

 使用完后,为了防止FILE变量pf变为野指针,将FILE变量pf置为NULL

例如:

//FILE变量定义
//打开文件
FILE* pf = fopen("text.txt","r");
if(pf == NULL)
{
    perror("error open file");
    return;
}
//关闭文件
fcolse(pf);
pf = NULL;
3.fclose函数的打开方式

文件使用方式含义打开的文件不存在
“r”(只读)读取数据,打开文本文件出错
"w"(只写)写入数据,打开文本文件新建文件
"a"(追加)打开文本文件,尾部追加数据新建文件
"rb"(只读)读取文件,打开二进制文件出错

"wb"(只写)

写入文件,打开二进制文件新建文件
"ab"(追加)打开二进制文件,尾部追加数据出错
"r+"(读写)打开文件读写出错
"w+"(读写)打开文件读写,文件有内容,清空读写新建文件
"a+"(读写)打开文件,在尾部读写新建文件
"rb+"(读写)打开二进制文件,进行读写出错
"wb+"(读写)打开二进制文件,文件有内容,清空读写新建文件
"ab+"(读写)打开二进制文件,在尾部进行读写出错

二.文件的使用

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

1.字符输入输出函数

2.文本行输入输出函数

3.格式化输入输出函数

4.二进制输入输出函数

2.流的概念

首先要知道“流”的概念,流就像水一样,源源不断的传送,它是一种数据传输的模式。根据数据流方向的不同,可分为输入流和输出流。

下面三组函数的差别:

1.scanf  /  printf

标准输入流(键盘)和标准输出流(屏幕)函数

2.  fscanf  /  fprintf

所有输入流和输出流的格式化函数

3.  sscanf  /  sprintf

用于格式化数据和字符串之间的转换

sprintf  将格式化的数据写入字符串

sscanf  从字符串中读取格式化数据

3.随机读写
1.rewind 函数

将文件的流的位置设置到开头(指向文件的开头)

 2.fseek 函数

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

 3.ftell 函数

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

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

二进制文件:数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件。
文本文件:如果要求在外存上以ASCII码的形式存储,则需要在存储前转换。以ASCII字符的形式存储的文件就是文本文件。
字符一律以ASCII形式存储,数值型数据既可以用ASCII形式存储,也可以使用二进制形式存储。
如有整数10000,如果以ASCII码的形式输出到磁盘,则磁盘中占用5个字节(每个字符一个字节),而二进制形式输出,则在磁盘上只占4个字节

 四.文件读取结束的判定

feof函数

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

 若是遇到了与流有关的结束符,返回一个非零值;否则返回0。

1. 文本文件读取是否结束,判断返回值是否为 EOF ( fgetc ),或者 NULL ( fgets )
例如:
 --- fgetc 判断是否为 EOF .
 --- fgets 判断返回值是否为 NULL .
2. 二进制文件的读取结束判断,判断返回值是否小于实际要读的个数。
例如:
 --- fread判断返回值是否小于实际要读的个数
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值