《c语言教学资料:07_c语言文件操作》由会员分享,可在线阅读,更多相关《c语言教学资料:07_c语言文件操作(4页珍藏版)》请在金锄头文库上搜索。
1、本章主要内容:文件的分类文件的打开与关闭文件的读写1.1文件概述前血章节所介绍的编程技术,所有的输入输出都只是涉及到键盘和显示器,这样,程序 中的数据无法保存,每次运行程序都要重新输入数据。其实键盘和显示器等也属于文件,但 是它们无法保存,这显然不方便,实际中,我们往往希望程序能长时间保存数据,以供程序 能在较长的时间内持续使用,要做到这一点,就要用文件。所谓文件,就是存储在外部介质 上的数据的集合,是操作系统数据管理的单位。1.2文件的分类按文件的逻辑结构:记录文件:由具有一定结构的记录组成(定长和不定长)流式文件:由一个个字符(字节)数据顺序组成 按读写方式:顺序文件:要求对文件的读写必须
2、从文件头开始随即文件:对文件的读写时随机的,利用系统两数将当前文件的读写位置设置好,就 可以从该位置进行读写操作。按存储介质:普通文件:存储介质文件(磁盘、磁带等)设备文件:非存储介质(键盘、显示器、打印机等)按数据的组织形式:文本文件:ASCII文件,每个字节存放一个字符的ASCII码。把每一位数及符号都转 换成字符,以ASCII码的形式输出到磁盘上存放。文本文件的一个字节对应于一个字符, 便于对字符进行逐个处理,也便于输出字符,但一般占用存储空间较多,而且要花费吋间进 行二进制形式与ASCII码间的转换。二进制文件:把数据按其在内存中的存储形式原样输出到磁盘上存放,可节省外存空间 和转换时
3、间,但一个字节并不对应一个字符,不能直接输出字符形式。Eg: short 1000;在内存中占用2个字节文本文件形式(ASCII形式):10000= T、0、0、0、0对应的 ASCII 码分别为:31 30 30 30 30在磁盘上存储形式为:00110001 00110000 00110000 00110000 00110000在内存中占用5个字节二进制形式:10000 = 00100111 00010000在磁盘上存储形式为:00100111 00010000在内存中占用2个字节1.3C语言文件指针缓冲文件系统:高级文件系统,系统自动为正在使用的文件开辟内存缓冲区程序数据区输入文件缓冲区
4、磁盘文件缓冲文件系统:输出文件缓冲区每个被使用的文件都会在内存中开辟一个区,这个区叫做内存缓冲区,用来存放文件的 有关信息(如文件名、文件状态、文件当前位置等等)。这些信息保存在一个结构体变量中, 该结构体类型rfl系统定义,名字为FILEo在头文件stdio.h中有该结构体的声明。FILE结构体定义如下:typedef structchar *_ptr;文件输入的下一个位置int_cnt;当前缓冲区的相对位置char*_ base;指基础位置(即是文件的起始位置)int-flag;文件标志int_file;文件的有效性验证int_charbuf;检查缓冲区状况,如果无缓冲区则不读収int_b
5、ufsiz;文件的大小char*_ tmpfname;临时文件名(FILE;文件指针:FILE *fp;用法:文件打开时,系统自动建立文件结构体,并把指向它的指针返回来,程序通过这个指 针获得文件信息,访问文件。文件关闭时,它的文件结构体被释放。1.4文件的打开与关闭想要对文件进行读写等操作,先要将其从外存中调入内存,即打开文件,对文件操作完 毕之后,要将文件保存到外存,即要关闭文件。C语言文件操作的所有库函数都包含在头文 件 stdio.h 中。文件的使用方式:打开文件一文件操作(读/写)关闭文件系统自动打开3个标准文件:标准输入键盘stdin标准输出显示器stdout标准错误输出显示器st
6、derr打开文件:函数原型:FILE *fopen(char *name, char *mode);功能:按指定的方式mode打开文件名为name的文件。返回值:正常打开,返回指向文件结构体的指针;打开失败,返回NULL。使用方法:#define FILE.NAME “a.ixf#define OPEN_MODE “rFILE *fp = fopen(FILE_NAME, OPEN_MODE);if(NULL =fp)printf(“Can not open this fllc!rr); exit(O);1说明:FILE_NAME可以为相对路径,也可以为绝对路径。其中相对路径是在当前的工程冃录
7、 下的文件,绝对路径可以是任意的一个位置的文件:”c:a.txt”,注意要用两个丫。OPEN_MODE表示文件的打开方式,见下表:文件使用方式含义“r/rb气只读)为输入打开个文本/ 一进制文件“w/wb气只写)为输出打开或建立一个文木/二进制文件“a/ab气追加)向文本/二进制文件尾追加数据“r+/rb+(读写)为读/写打开一个文本/二进制文件“w+/wb+(读写)为读/写建立一个文本/二进制文件“a+/ab+(读写)为读/写打开或建立一个文本/二进制文件用“r”方式打开的文件只能进行读操作,而且该文件必须已经存在,不能用“r”打开 一个不存在的文件;用“w”打开的文件只能进行写操作,如果原
8、来不存在该文件,则在打 开时新建一个该文件名的文件,如果原来存在该文件,则从该文件的起始位置开始写,文件 原有内容将会被覆盖;用“”方式打开的文件也只能进行写操作,并且要打开的文件必须 已经存在,此时位置指针移到了文件的末尾,即从文件末尾开始添加新的数据,不会删除原 有的数据;b表示打开的是二进制文件。叶或w+表示可以进行读写操作。exit(O);表示终止正在执行的程序,0表示正常退出,非0表示错误退出。要包含头文件 #include o 关闭文件:函数原型:int fclose(FILE* fp);功能:关闭fp所指向的文件返回值:正常关闭返回0:出错时,返回非()使用方法:fclose(fp);缓冲文件系统:输入文件缓冲区1.5文件的读写参见C语言文件操作常用函数详解.doc