C语言程序设计教程 第9章

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第9章文件9.1文件的概念9.2文件的打开与关闭9.3文件的读写9.4文件的定位9.5程序举例9.1文件的概念一般来说,文件是指存储在外存储器上的数据的集合。9.1.1文本文件与二进制文件根据文件中数据的存储形式,一般又将文件分为文本文件和二进制文件两种。文本文件又称为ASCII文件。在这种文件中,每个字节存放一个字符的ASCII码值。9.1.2缓冲文件系统C语言编译系统对文件的处理有两种方式,分别采用缓冲文件系统方式与非缓冲文件系统方式进行。所谓缓冲文件系统是指系统自动地为正在被使用的文件在内存中开辟一个缓冲区。当需要向外存储器中的文件输出数据时,必须先将数据送到为该文件开辟的缓冲区中,当缓冲区充满以后才一起送到外存储器中。当需要对外存储器中的文件读入数据进行处理时,也首先从外存储器一次将一批数据读入缓冲区(将缓冲区充满),然后再从缓冲区中将数据逐个读入。9.1.3文件类型指针在C语言的缓冲文件系统中,用文件类型指针来标识文件。定义文件类型指针的一般形式为FILE*指针变量名;其中FILE是C编译系统定义的一种结构体类型,其中的成员用于存放有关文件的一些信息。指针变量名用于指向一个文件,实际上是用于存放文件缓冲区的首地址。例如,FILE*fp;定义了一个结构体FILE类型的指针变量fp。一般来说,对文件操作有以下3个方面:(1)打开文件在计算机内存中开辟一个缓冲区,用于存放被打开文件的有关信息。(2)文件处理包括:读写、定位等操作。(3)关闭文件将缓冲区中的内容写回到外存(磁盘),并释放缓冲区。9.2文件的打开与关闭9.2.1文件的打开在C语言中,打开一个文件的一般形式如下:FILE*fp(或其他指针变量名);…fp=fopen(“文件名”,“文件使用方式”);为了打开一个文件,首先要为该文件定义一个文件类型指针,然后用C语言提供的fopen函数打开文件。fopen函数有两个参数:“文件名”与“文件使用方式”。它们均是字符串。“文件使用方式”可以规定以下几种对文件的访问形式:r只读若文件不存在,则返回空指针;w只写若指定的文件已存在,则其中原有内容被删去;否则创建一个新文件;a追加向文件尾增加数据。若指定的文件不存在,则创建一个新文件;r+读写指定的文件必须已存在,否则返回NULL;w+读写若指定的文件已存在,则其中原有内容被删去;a+读写追加写。9.2.2文件的关闭对文件操作完成后,要关闭文件。在C语言中,关闭文件的一般形式如下:fclose(fp);fclose函数的主要功能是将由fp指向的缓冲区中的数据存放到外存储器的文件中,然后释放该缓冲区。9.3文件的读写9.3.1文件读函数对文件进行读操作,是指从外存储器的文件中向程序输入数据。在C语言中,读文件的函数主要有以下几个。1.fgetc函数该函数的功能是,从指定的文件读入一个字符。例如,charc;…c=fgetc(fp);/*假设该文件已打开,下同*/2.fread函数该函数的功能是,从指定的文件中读入一组数据。其形式为fread(buffer,size,count,fp);其中:buffer存放读入数据的内存首地址;Size每个数据项的字节数;count数据项个数;fp文件类型指针。3.fscanf函数该函数的功能是,从指定的文件中格式化读数据。其一般形式为fscanf(文件指针,格式控制,地址表);这个函数与格式输入函数scanf很相似,它们的区别就在于,scanf函数是从键盘输入数据,而fscanf函数是从文件读入数据,因此在fscanf函数参数中多了一个文件指针,用于指出从哪个文件读入数据。9.3.2文件写函数1.fputc函数该函数的功能是,将一个字符写到指定的文件中。其形式为fputc(c,fp);若写成功,则返回已输出的字符,否则返回EOF。2.fwrite函数该函数的功能是,将一组数据写到指定的文件中。其形式为fwrite(buffer,size,count,fp);其中:buffer输出数据的首地址;size每个数据项的字节数;count数据个数;fp文件类型指针。3.fprintf函数该函数的功能是,格式化写数据到指定的文件中。其形式为fprintf(文件指针,格式控制,输出表);这个函数与格式输出函数printf很相似,它们的区别就在于,printf函数是将数据输出到显示屏幕上,而fprintf函数是将数据输出到文件中,因此在fprintf函数参数中多了一个文件指针,用于指出将数据输出到哪个文件中。9.4文件的定位1.rewind函数该函数的功能是,将文件的读写指针移动到文件的开头。其形式为rewind(fp);其中fp是已经打开的文件指针。2.fseek函数该函数的功能是,将文件的读写指针移动到指定的位置。其形式为fseek(文件指针,偏移量,起始位置);其中各参数的意义如下:起始位置是指移动文件读写指针的参考位置,它有以下3个值:SEEK_SET或0表示文件首SEEK_CUR或1表示当前读写的位置SEEK_END或2表示文件尾3.ftell函数该函数的功能是,返回文件的当前读写位置(出错返回-1L)。其形式为ftell(fp);9.5程序举例例9.6统计文件letter.txt中的字符个数。C程序如下:#includestdio.hmain(){longcount=0;FILE*fp;if((fp=fopen(letter.txt,r+))==NULL){printf(cannotopenthisfile!\n);exit(0);}fgetc(fp);while(!feof(fp)){fgetc(fp);count=count+1;}printf(count=%ld\n,count);fclose(fp);}在上述程序中,函数feof(fp)的功能是检查fp所指向的文件是否结束,如遇文件结束,则返回1,否则返回0。语句fgetc(fp)的功能主要是让文件的读写指针往后移动一个字符,而不是读取一个字符。

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功