文件基础知识
- 格式:docx
- 大小:17.25 KB
- 文档页数:3
文件基础知识:
根据数据的组织形式,数据文件可分为ASCII码文件和二进制文件
字符一律用ASCII码存储,数据型数据既可以用ASCII码也可以用二进制形式
数据在内存中是以二进制形式存储的,所以不加转换的输到外存,就是二进制文件;
可以认为二进制文件就是存储在内存的数据的映像,所以称为映像文件(数据完全按照内存中的状态来存储,即将数据在内存中存放的每个字节的二进制数按照顺序直接照搬到文件中。)
如果在外存上以ASCII代码存储,则在存储前需要进行转换;
ASCII码文件称为文本文件,每一个字节存放一个字符的ASCII码;
存储的好处:用文本方式存储数据其实也是存的二进制数,只不过每个字节都是ASCII值,用记事本等文本编辑软件打开时可以看到一个个字符,故称为文本方式。
所有数据都按照文本方式存储的文件,称为文本文件;文本文件便于用户直接打开查看内容,但文本文件读写速度比较慢。
ASCII码输出时字符和字节一一对应,一个字节代表一个字符;
因而便于对字符进行逐个处理,也便于输出字符;
需要花费转换时间,ASCII码和二进制之间的转换需要花费时间;
二进制文件所有数据都按照二进制方式存储的文件,二进制文件读写速度比较快,但不宜直接打开看内容,其中的数据只能通过数据读取;
二进制形式输出数值,可以节省外存空间和转换时间,此时每一个字节并不一定代表一个字符;
FILE
#include
Typedef struct{
} FILE;
程序中可以直接用FILE类型定义变量,每一个FILE类型变量对应一个文件信息区,在其中存放文件的有关信息;
一般定义一个指向文件型数据的指针变量;
FILE * fp;
定义fp是一个指向FILE类型数据的指针变量,fp指向该文件的文件信息区,通过该文件信息区中的信息就能够访问该文件;
2.打开与关闭文件
打开文件是为文件建立相应的信息区(用来存放有关文件的信息)和文件缓冲区(用来暂时存放输入输出的数据);
在打开文件的同时,一般都指定一个指针变量指向该文件,也就是建立起指针变量和文件之
间的联系;
这样可以通过指针变量对文件进行读写;
缓冲区是在打开文件时分配的(fopen),每当打开一个文件,系统就该为该文件在内存中分配缓冲区,数据无论是从计算机输出到文件,还是从文件读入到计算机,都要经过这个唯一的缓冲区;
打开一个文件需要完成三件事情;
1.准备访问的文件的名字
2.使用文件的方式
3.让哪一个指针变量指向被打开的文件;
fopen的返回值若为NULL;说明打开文件出错。
If(fp=fopen(“file”,”r”)==NULL);
{
printf(“can’t open the file”);
exit(0);//关闭所有文件,终止正在执行的程序
}
程序中可以使用3种标准的流文件:
1.标准输入流
2.标准输出流
3.标准出错输出流//当程序出现错误时,将出错信息发送到终端
以fclose函数关闭数据文件;
“关闭”就是撤销文件信息区和文件文件缓冲区,使文件指针变量不再指向该文件;
fp指向的文件关闭,此后fp不再指向该文件;
在向文件写数据时,是先将数据输出到缓冲区,待缓冲区充满后才正式输出给文件,若缓冲区未充满而程序结束运行,就有可能使缓冲区的数据丢失
!!!!要用fclose函数关闭文件,先把缓冲区中的数据输出到磁盘文件,然后才撤销文件信息区;
Fclose函数的返回值:成功执行关闭操作,返回值为0;否则返回值为-1;
intfputc(char,FILE*);
要写的字符作为参数一;文件类型指针作为参数二(文件类型);
读写位置指针:读写位置指针总是指向将要读写的字节
文件结束标志:每个文件的内容都是有限长的,在文件中读数据的时候,读写位置指针不能超过文件最后的界限,这个界限被称为文件结束标志;
若读写位置指针已指向文件结束标志,则表示无数据可读;
FILE*fopen(char*filename,char*mode);
若成功,fopen的返回值为内存中所分配的FILE型变量的首地址;
若打开失败,则返回NULL;
fopen函数第一个参数,是一个字符指针变量,它的值决定要打开哪个文件;
调用fopen()函数时,需要传递给它一个字符指针,可以是字符串常量,可以是字符数组名,也可以是一个已存储字符指针的指针变量;
字符