〇.写在前面
若读者朋友们发现问题,请不吝斧正。
一.文件指针
(1)每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统声明的,取名FILE
(2)每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息,
使用者不必关心细节。
(3)为了方便,我们使用文件指针来控制这个结构体变量,从而起到操作文件的作用。
(4)操作文件指针的函数有:fseek,ftell和rewind等
二.文件的打开和关闭
(1)//打开文件
FILE * fopen ( const char * filename, const char * mode );
(2)//关闭文件
int fclose ( FILE * stream )
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE* pf = fopen("a.txt", "w");
if (pf == NULL)
{
printf("file open failed");
exit(-1);
}
fputs("文件操作案例。",pf);
fclose(pf);
}
三.文本文件和二进制文件
(1)根据数据的组织形式,数据文件被称为文本文件或者二进制文件。
(2)数据在内存中以二进制的形式存储,如果不加转换的输出到外存(即文件,硬盘),就是二进制文件。
(3)如果要求在外存上以ASCII码的形式存储,则需要在存储前转换。以ASCII字符的形式存储的文件就是文本文件。
(4)以int a = 10000举例,按二进制形式存储,就是把
a的补码存到外存上;而按文本形式存储,就会把它转换为"10000"五个字符,然后按对应的编码存到外存上。
四.输入输出流
(1)所谓输入输出流是一种抽象的概念,表示数据流入流出到某个地方
(2)标准输入输出流(stdin,stdout):从键盘中输入,再控制台输出,如scanf,printf
(3)文件输入输出流:把数据插入文件,把数据从文件中提取出来,如fscanf,fprintf
(4)以下函数具体操作见 cplusplus.com
五.文件缓存区
(1)系统自动地在内存中为程序中每一个正在使用的文件开辟一块“文件缓冲区”。
(2)数据从外存到内存要先经过输入缓存区,从内存到外存要先经过输出缓存区,缓存区中的数据都要充满缓存区才会被输入到目标位置。关闭文件时会刷新缓存区。