预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10
亲,该文档总共30页,到这已经超出免费预览范围,如果喜欢就直接下载吧~
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第12章文件12.1C语言文件概述(3)根据文件的存储形式,可分为ASCII码文件和二进制文件。ASCII码文件的每1个字节存储1个字符,因而便于对字符进行逐个处理。但一般占用存储空间较多,而且要花费转换时间(二进制与ASCII码之间的转换)。二进制文件是把内存中的数据,原样输出到磁盘文件中。可以节省存储空间和转换时间,但1个字节并不对应1个字符,不能直接输出字符形式。3.读文件与写文件所谓读文件是指,将磁盘文件中的数据传送到计算机内存的操作。所谓写文件是指,从计算机内存向磁盘文件中传送数据的操作。4.构成文件的基本单元与流式文件C语言将文件看作是由一个一个的字符(ASCII码文件)或字节(二进制文件)组成的。将这种文件称为流式文件。而在其它一些高级语言中,组成文件的基本单位是记录,对文件操作的基本单位也是记录。5.文件类型FILE系统给每个打开的文件都在内存中开辟一个区域,用于存放文件的有关信息(如文件名、文件位置等)。这些信息保存在一个结构类型变量中,该结构类型由系统定义、取名为FILE。注意:结构类型名“FILE”必须大写。6.ANSIC的缓冲文件系统所谓缓冲文件系统是指,系统自动地在内存区为每个正在使用的文件开辟一个缓冲区。从内存向磁盘输出数据时,必须首先输出到缓冲区中。待缓冲区装满后,再一起输出到磁盘文件中。从磁盘文件向内存读入数据时,则正好相反:首先将一批数据读入到缓冲区中,再从缓冲区中将数据逐个送到程序数据区。12.2文件的打开与关闭(1)“文件名”是指要打开(或创建)的文件名。如果使用字符数组(或字符指针),则不使用双引号。(2)“操作方式”如表13-1所示。例如,FILE*fp;fp=fopen("data.99","r");3.说明(1)如果不能实现打开指定文件的操作,则fopen()函数返回一个空指针NULL(其值在头文件stdio.h中被定义为0)。为增强程序的可靠性,常用下面的方法打开一个文件:if((fp=fopen("文件名","操作方式"))==NULL){printf("cannotopenthisfile\n");exit(0);}●关于exit()函数1)用法:voidexit([程序状态值]);2)功能:关闭已打开的所有文件,结束程序运行,返回操作系统,并将“程序状态值”返回给操作系统。当“程序状态值”为0时,表示程序正常退出;非0值时,表示程序出错退出。使用二进制文件时,内存中的数据形式与数据文件中的形式完全一样,就不再进行转换。在程序开始运行时,系统自动打开三个标准文件,并分别定义了文件指针:1)标准输入文件——stdin:指向终端输入(一般为键盘)。如果程序中指定要从stdin所指的文件输入数据,就是从终端键盘上输入数据。2)标准输出文件——stdout:指向终端输出(一般为显示器)。3)标准错误文件——stderr:指向终端标准错误输出(一般为显示器)。12.2.2文件的关闭──fcolse()函数1.用法:intfclose(FILE*文件指针);2.功能:关闭“文件指针”所指向的文件。如果正常关闭了文件,则函数返回值为0;否则,返回值为非0。例如,fclose(fp);/*关闭fp所指向的文件*/13.3文件的读写操作12.3.1读/写文件中的一个字符2.从文件中读入一个字符──fgetc()1)用法:intfgetc(文件指针);2)功能:从“文件指针”所指向的文件中,读入一个字符,同时将读写位置指针向前移动1个字节(即指向下一个字符)。该函数无出错返回值。例如:ch=fgetc(fp);从文件fp中读一个字符,同时将fp的读写位置指针向前移动到下一个字符。例题1:从键盘上输入一些字符,逐个把它们送到磁盘上去,直到输入一个“#”为止。关于符号常量EOF在对ASCII码文件执行读入操作时,如果遇到文件尾,则读操作函数返回一个文件结束标志EOF(其值在头文件stdio.h中被定义为-1)。在对二进制文件执行读入操作时,必须使用库函数feof()来判断是否遇到文件尾。库函数feof():1)用法:intfeof(文件指针);2)功能:在执行读文件操作时,如果遇到文件尾,则函数返回逻辑真(1);否则,则返回逻辑假(0)。feof()函数同时适用于ASCII码文件和二进制文件。例如,!feof(input))表示源文件(用于输入)未结束,循环继续。例题2:将一个磁盘文件中的信息复制到另一个磁盘文件中。12.3.2读/写一个字符串──fgets()和fputs()(2)库函数fputs()──向指定文件输出一个字符串1)用法:intfputs(字符串,文