《C语言程序设计教程》课件第10章 文件.ppt

上传人(卖家):momomo 文档编号:7650579 上传时间:2024-05-23 格式:PPT 页数:50 大小:1.56MB
下载 相关 举报
《C语言程序设计教程》课件第10章 文件.ppt_第1页
第1页 / 共50页
《C语言程序设计教程》课件第10章 文件.ppt_第2页
第2页 / 共50页
《C语言程序设计教程》课件第10章 文件.ppt_第3页
第3页 / 共50页
《C语言程序设计教程》课件第10章 文件.ppt_第4页
第4页 / 共50页
《C语言程序设计教程》课件第10章 文件.ppt_第5页
第5页 / 共50页
点击查看更多>>
资源描述

1、武汉工程职业技术学院武汉工程职业技术学院第十章第十章 文件文件武汉工程职业技术学院武汉工程职业技术学院2 2第十章第十章 文件文件教学目标:教学目标:教学重点与难点:教学重点与难点:武汉工程职业技术学院武汉工程职业技术学院3 310.1 文件的概述文件的概述如果需要长期保存程序运行所需的数据,或程序运行产生如果需要长期保存程序运行所需的数据,或程序运行产生的结果,就必须以文件形式存储到外部存储介质上。通过使用的结果,就必须以文件形式存储到外部存储介质上。通过使用文件操作的相关函数,可以实现数据的保存,以便下次运行程文件操作的相关函数,可以实现数据的保存,以便下次运行程序时,可以从文件中读取所需

2、要的内容。序时,可以从文件中读取所需要的内容。1.文件的概念文件的概念文件文件是根据特定目的收集在一起并存储在外部介质上的一是根据特定目的收集在一起并存储在外部介质上的一组相关数据的有序集合。这个数据集有一个名称,叫做文件名。组相关数据的有序集合。这个数据集有一个名称,叫做文件名。其中,外部介质是指硬盘、光盘、其中,外部介质是指硬盘、光盘、U盘等。计算机的操作盘等。计算机的操作系统是以文件为单位对数据信息进行管理的,这些数据可以是系统是以文件为单位对数据信息进行管理的,这些数据可以是文本、图片、音频、视频等。文本、图片、音频、视频等。武汉工程职业技术学院武汉工程职业技术学院4 410.1 文件

3、的概述文件的概述2.文件分类文件分类从用户的角度看从用户的角度看,文件可分为普通文件和设备文件两种。,文件可分为普通文件和设备文件两种。(1)普通文件:普通文件:是指驻留在磁盘或其他外部介质上的一个有是指驻留在磁盘或其他外部介质上的一个有序数据集。如源程序文件、目标文件、可执行文件、序数据集。如源程序文件、目标文件、可执行文件、word文文档等。档等。(2)设备文件:设备文件:是指与主机相连的各种外部设备,如显示器、是指与主机相连的各种外部设备,如显示器、打印机、鼠标、键盘等。在操作系统中,可以把外部设备也看打印机、鼠标、键盘等。在操作系统中,可以把外部设备也看作是一个文件来管理,把它们的输入

4、和输出等同于对磁盘文件作是一个文件来管理,把它们的输入和输出等同于对磁盘文件的读和写。的读和写。武汉工程职业技术学院武汉工程职业技术学院5 510.1 文件的概述文件的概述从文件编码的方式来看从文件编码的方式来看,文件可分为,文件可分为ASCII码文件和二进制码文件和二进制文件两种。文件两种。(1)ASCII码文件:码文件:文本文件也称为文本文件也称为ASCII码文件。这种文码文件。这种文件在保存的时候,每个字符对应一个字节,用于存放对应的件在保存的时候,每个字符对应一个字节,用于存放对应的ASCII码。码。例如,整数例如,整数5678的存储形式如下:的存储形式如下:ASCII码:码:0011

5、0101 00110110 00110111 00111000十进制码:十进制码:5 6 7 8共占用共占用4个字节,即每个数字字符占一个字节。个字节,即每个数字字符占一个字节。武汉工程职业技术学院武汉工程职业技术学院6 610.1 文件的概述文件的概述(2)二进制文件:二进制文件:不是保存不是保存ASCII码,而是把内存中的数据码,而是把内存中的数据按其在内存中存储的二进制编码方式来保存文件内容。按其在内存中存储的二进制编码方式来保存文件内容。例如,整数例如,整数5678的二进制形式为:的二进制形式为:00010110 00101110只占只占2个字节。个字节。输入输出字符流的开始和结束只由

6、程序控制而不受物理符输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)控制,因此,也把这种文件称为号(如回车符)控制,因此,也把这种文件称为“流式文件流式文件”。武汉工程职业技术学院武汉工程职业技术学院7 710.1 文件的概述文件的概述3.文件指针文件指针在在C语言中用一个指针变量指向一个文件,这个指针称为文件指针。文件指针语言中用一个指针变量指向一个文件,这个指针称为文件指针。文件指针是一个指向文件有关信息的指针,这些信息包括文件名、文件状态及文件当前位置是一个指向文件有关信息的指针,这些信息包括文件名、文件状态及文件当前位置等。它们保存在一个结构体变量中,该结构体类型是由系

7、统定义的,规定为等。它们保存在一个结构体变量中,该结构体类型是由系统定义的,规定为FILE型。型。在在stdio.h文件中声明如下:文件中声明如下:typedef struct short level;/*level表示文件缓冲区的状态是满还是空表示文件缓冲区的状态是满还是空*/unsigned flags;/*flags为文件状态标志为文件状态标志*/char fd;/*fd为文件描述符为文件描述符*/unsigned char hold;/*hold表示如果没有文件缓冲区则不能读取字符表示如果没有文件缓冲区则不能读取字符*/short bsize;/*bsize为文件缓冲区的大小为文件缓冲

8、区的大小*/unsigned char*buffer;/*指针指针buffer指向数据缓冲区的位置指向数据缓冲区的位置*/unsigned char*curp;/*指针指针curp指向文件的当前活动指针指向文件的当前活动指针*/unsigned istemp;/*istemp表示文件是否为临时文件表示文件是否为临时文件*/short token;/*token用于文件合法性检查用于文件合法性检查*/FILE;武汉工程职业技术学院武汉工程职业技术学院8 8用户可以通过上面定义的用户可以通过上面定义的FILE类型来定义变量类型来定义变量。语法的一般格式为:语法的一般格式为:FILE*指针变量标识符

9、指针变量标识符;例如:例如:FILE*pfile;其中,其中,pfile是指向是指向FILE结构的指针变量,通过结构的指针变量,通过pfile即可找即可找到存放某个文件信息的结构变量,然后按结构变量提供的信息到存放某个文件信息的结构变量,然后按结构变量提供的信息找到该文件,从而实现对文件的各种操作。找到该文件,从而实现对文件的各种操作。10.1 文件的概述文件的概述武汉工程职业技术学院武汉工程职业技术学院9 910.2 文件的打开与关闭文件的打开与关闭C语言对文件的操作主要是对流式文件的打开、关闭、读、语言对文件的操作主要是对流式文件的打开、关闭、读、写及定位等操作。写及定位等操作。1.打开文

10、件打开文件打开文件使用打开文件使用fopen函数,其调用的一般格式为:函数,其调用的一般格式为:文件指针名文件指针名=fopen(文件名文件名,使用文件方式使用文件方式);说明:说明:(1)文件指针名:必须声明为文件指针名:必须声明为FILE类型的指针变量。类型的指针变量。(2)文件名:被打开的文件的名字,包含路径的文件名字符文件名:被打开的文件的名字,包含路径的文件名字符串。串。(3)使用文件方式:打开文件的方式,如只读或只写等等。使用文件方式:打开文件的方式,如只读或只写等等。使用文件的方式共有使用文件的方式共有12种,如表种,如表10.1所示。所示。武汉工程职业技术学院武汉工程职业技术学

11、院101010.2 文件的打开与关闭文件的打开与关闭文件使用方式文件使用方式含义含义“rt”只读打开一个文本文件,只允许读数据只读打开一个文本文件,只允许读数据“wt”只写打开或建立一个文本文件,只允许写数据只写打开或建立一个文本文件,只允许写数据“at”追加打开一个文本文件,并在文件末尾写数据追加打开一个文本文件,并在文件末尾写数据“rb”只读打开一个二进制文件,只允许读数据只读打开一个二进制文件,只允许读数据“wb”只写打开或建立一个二进制文件,只允许写数据只写打开或建立一个二进制文件,只允许写数据“ab”追加打开一个二进制文件,并在文件末尾写数据追加打开一个二进制文件,并在文件末尾写数据

12、“rt+”读写打开一个文本文件,允许读和写读写打开一个文本文件,允许读和写“wt+”读写打开或建立一个文本文件,允许读和写读写打开或建立一个文本文件,允许读和写“at+”读写打开一个文本文件,允许读,或在文件末追加数据读写打开一个文本文件,允许读,或在文件末追加数据“rb+”读写打开一个二进制文件,允许读和写读写打开一个二进制文件,允许读和写“wb+”读写打开或建立一个二进制文件,允许读和写读写打开或建立一个二进制文件,允许读和写“ab+”读写打开一个二进制文件,允许读,或在文件末追加数据读写打开一个二进制文件,允许读,或在文件末追加数据表表10.1 文件使用方式及含义文件使用方式及含义武汉工

13、程职业技术学院武汉工程职业技术学院111110.2 文件的打开与关闭文件的打开与关闭关于文件使用方式的几点说明:关于文件使用方式的几点说明:(1)文件使用方式由文件使用方式由“r”、“w”、“a”、“t”、“b”、“+”6个字符拼个字符拼成,各字符具体含义如下:成,各字符具体含义如下:r(read):读;:读;w(write):写;:写;a(append):追加;:追加;t(text):文本文件,可省略不写;:文本文件,可省略不写;b(banary):二进制文件;:二进制文件;+:读和写。:读和写。(2)当使用方式为当使用方式为“r”时,该文件必须已经存在,否则报错,并且时,该文件必须已经存在

14、,否则报错,并且只能从该文件读出数据。只能从该文件读出数据。(3)当使用方式为当使用方式为“w”时,只能向该文件写入数据。时,只能向该文件写入数据。(4)如果向一个已存在的文件追加新的内容,只能使用如果向一个已存在的文件追加新的内容,只能使用“a”方式方式打开文件,并且该文件必须存在,否则将会出错。打开文件,并且该文件必须存在,否则将会出错。武汉工程职业技术学院武汉工程职业技术学院121210.2 文件的打开与关闭文件的打开与关闭(5)如果打开一个文件时出错,如果打开一个文件时出错,fopen函数将返回一个空指函数将返回一个空指针值针值NULL。(6)把一个文本文件读入内存时,要将把一个文本文

15、件读入内存时,要将ASCII码转换成二进码转换成二进制码;把文件以文本方式写入磁盘时,也要将二进制码转换成制码;把文件以文本方式写入磁盘时,也要将二进制码转换成ASCII码,因此文本文件的读写要花费较多的转换时间。码,因此文本文件的读写要花费较多的转换时间。(7)标准输入文件(键盘)、标准输出文件(显示器)和标标准输入文件(键盘)、标准输出文件(显示器)和标准出错输出(出错信息)是由系统打开的,可直接使用。准出错输出(出错信息)是由系统打开的,可直接使用。武汉工程职业技术学院武汉工程职业技术学院131310.2 文件的打开与关闭文件的打开与关闭2.关闭打开的文件关闭打开的文件文件使用完毕后,应

16、关闭文件,以避免文件的数据丢失等错误。关闭文件使用完毕后,应关闭文件,以避免文件的数据丢失等错误。关闭文件使用文件使用fclose函数,其调用的一般格式为:函数,其调用的一般格式为:fclose(文件指针文件指针);例如:例如:fclose(fp);文件关闭成功时,文件关闭成功时,fclose函数的返回值为函数的返回值为0。如返回非零值,则表示有。如返回非零值,则表示有错误发生。错误发生。【例【例10.1】实现文件的打开与关闭功能。】实现文件的打开与关闭功能。程序如下:程序如下:#include#include int main(void)FILE*file=NULL;file=fopen(D

17、:DataTest.txt,wt+);/*打开文件打开文件*/if(file!=NULL)武汉工程职业技术学院武汉工程职业技术学院1414puts(打开文件成功打开文件成功n);elseputs(打开文件失败打开文件失败n);fclose(file);/*关闭文件关闭文件*/getchar();return 0;程序分析:程序分析:运行程序后,如果运行程序后,如果“D:DataTest.txt”文件存在,那么打开文件成文件存在,那么打开文件成功,文件指针不为功,文件指针不为NULL,显示提示信息,显示提示信息“打开文件成功打开文件成功”,并关闭文件。,并关闭文件。否则,显示否则,显示“打开文件

18、失败打开文件失败”的提示信息。的提示信息。10.2 文件的打开与关闭文件的打开与关闭武汉工程职业技术学院武汉工程职业技术学院151510.3 顺序文件的读写顺序文件的读写文件读写是对文件最常用的操作,在文件读写是对文件最常用的操作,在C语言中,提供了多语言中,提供了多种文件读写的函数来实现文件读写。种文件读写的函数来实现文件读写。文件读写函数分为两类:文件读写函数分为两类:顺序读写函数和随机读写函数。顺序读写函数和随机读写函数。顺序读写文件是对文件的访问次序按照数据在文件中的实顺序读写文件是对文件的访问次序按照数据在文件中的实际存放顺序进行,不允许跳跃式读取或插入到任意位置写入际存放顺序进行,

19、不允许跳跃式读取或插入到任意位置写入数据。数据。顺序读写文件的函数分为四类,顺序读写文件的函数分为四类,具体如下:具体如下:(1)字符读写函数:字符读写函数:fgetc和和fputc。(2)字符串读写函数:字符串读写函数:fgets和和fputs。(3)数据块读写函数:数据块读写函数:fread和和fwrite。(4)格式化读写函数:格式化读写函数:fscanf和和fprintf。武汉工程职业技术学院武汉工程职业技术学院161610.3.1 字符读写函数字符读写函数fgetc和和fputc字符读写函数是以字符(字节)为单位的读写函数。每次字符读写函数是以字符(字节)为单位的读写函数。每次可从文

20、件读出或向文件写入一个字符。可从文件读出或向文件写入一个字符。1.读字符函数读字符函数fgetcfgetc函数的功能是从指定的文件中读取一个字符,函数调函数的功能是从指定的文件中读取一个字符,函数调用的一般格式为:用的一般格式为:字符变量字符变量=fgetc(文件指针文件指针);例如:例如:ch=fgetc(fp);表示从打开的文件表示从打开的文件fp中读取一个字符并赋给字符变量中读取一个字符并赋给字符变量ch。武汉工程职业技术学院武汉工程职业技术学院171710.3.1 字符读写函数字符读写函数fgetc和和fputc【例【例10.2】使用读字符函数,从文件中读取一个一个的字】使用读字符函数

21、,从文件中读取一个一个的字符,并将读取的字符保存在字符数组中,然后输出字符数组符,并将读取的字符保存在字符数组中,然后输出字符数组的内容。的内容。程序如下:程序如下:#include#include int main(void)FILE*file;char buffer81;int i;char ch;file=fopen(D:DataTest.txt,r);/*打开文件打开文件*/武汉工程职业技术学院武汉工程职业技术学院181810.3.1 字符读写函数字符读写函数fgetc和和fputcif(file=NULL)puts(“打开文件失败打开文件失败n”);ch=fgetc(file);/*

22、从文件中读取字符从文件中读取字符*/*如果读取的字符不到如果读取的字符不到80个,或者没有读到文件的末尾处,个,或者没有读到文件的末尾处,就不停的一个字符一个字符的读取就不停的一个字符一个字符的读取*/for(i=0;(i=80)&(feof(file)=0);i+)bufferi=ch;ch=fgetc(file);武汉工程职业技术学院武汉工程职业技术学院1919bufferi=0;/*添加字符串结束符添加字符串结束符*/printf(%sn,buffer);/*输出保存到数组中的内容输出保存到数组中的内容*/fclose(file);getchar();return 0;10.3.1 字符

23、读写函数字符读写函数fgetc和和fputc程序分析:程序分析:运行程序后,打开文件运行程序后,打开文件“Test.txt”,从文件中依次读取,从文件中依次读取字符,直到读到文件末尾,或者已经读取了字符,直到读到文件末尾,或者已经读取了80个字符,然后个字符,然后输出该字符串。例如,若文件中的内容为:输出该字符串。例如,若文件中的内容为:This is a test file,则输出的字符串为:,则输出的字符串为:This is a test file。武汉工程职业技术学院武汉工程职业技术学院202010.3.1 字符读写函数字符读写函数fgetc和和fputc2.写字符函数写字符函数fput

24、cfputc函数的功能是将一个字符写入指定的文件中,函数函数的功能是将一个字符写入指定的文件中,函数调用的一般格式为:调用的一般格式为:fputc(字符量字符量,文件指针文件指针);其中,待写入的字符量可以是字符常量或变量。其中,待写入的字符量可以是字符常量或变量。例如:例如:fputc(c,fp);表示将字符表示将字符c写入写入fp所指向的文件。所指向的文件。武汉工程职业技术学院武汉工程职业技术学院【例【例10.310.3】实现从键盘输入字符,将输入的字符保存到文件】实现从键盘输入字符,将输入的字符保存到文件中,直到输入回车键为止。中,直到输入回车键为止。程序如下:程序如下:#include

25、#include int main(void)FILE*file;char buffer81;int i;char ch;file=fopen(D:DataTest.txt,wt);10.3.1 字符读写函数字符读写函数fgetc和和fputc武汉工程职业技术学院武汉工程职业技术学院222210.3.1 字符读写函数字符读写函数fgetc和和fputcif(file=NULL)puts(打开文件失败打开文件失败n);/*输入一个字符,如果输入的不是回车,则将输入的字符保存到文件输入一个字符,如果输入的不是回车,则将输入的字符保存到文件*/ch=getchar();while(ch!=n)fpu

26、tc(ch,file);ch=getchar();fclose(file);return 0;程序分析:程序分析:运行程序后,输入一串字符,按回车键后,运行程序后,输入一串字符,按回车键后,会会将输入的字符串保存到将输入的字符串保存到“D:DataTest.txt”文文件中。件中。武汉工程职业技术学院武汉工程职业技术学院232310.3.2 字符串读写函数字符串读写函数fgets和和fputs字符串读写函数和字符读写函数类似,字符读写函数,每字符串读写函数和字符读写函数类似,字符读写函数,每次操作一个字符,而字符串读写函数是每次操作一串字符。次操作一个字符,而字符串读写函数是每次操作一串字符。

27、1.读字符串函数读字符串函数fgetsfgets函数的功能是从指定的文件中读一个字符串到字符数函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的一般格式为:组中,函数调用的一般格式为:fgets(字符数组名字符数组名,n,文件指针文件指针);其中,其中,“字符数组字符数组”用来存放文件中读取的字符串;用来存放文件中读取的字符串;“n”是一个正整数,指定要读取的字符串的长度,实际上最多只是一个正整数,指定要读取的字符串的长度,实际上最多只能从文件中读取能从文件中读取n-1个字符。个字符。例如:例如:fgets(str,n,fp);表示从表示从fp所指向的文件中读出所指向的文件中读出n

28、-1个字符放入字符数组个字符放入字符数组str中。中。武汉工程职业技术学院武汉工程职业技术学院242410.3.2 字符串读写函数字符串读写函数fgets和和fputs【例【例10.4】实现从文件中读取一串字符,并显示字符串的内容。】实现从文件中读取一串字符,并显示字符串的内容。程序如下:程序如下:#include#include int main(void)FILE*file;char line100;file=fopen(D:DataTest.txt,r);/*打开文件打开文件*/if(file=NULL)puts(打开文件失败打开文件失败n);/*从文件中读取一串字符,读取的长度为从文件

29、中读取一串字符,读取的长度为100*/if(fgets(line,100,file)=NULL)武汉工程职业技术学院武汉工程职业技术学院252510.3.2 字符串读写函数字符串读写函数fgets和和fputsputs(读取字符串失败读取字符串失败n);elseprintf(读取的字符串为读取的字符串为:%s,line);fclose(file);getchar();return 0;程序分析:程序分析:运行程序后,打开文件运行程序后,打开文件“Test.txt”,从中读取,从中读取100个字符,并将读取的内容个字符,并将读取的内容输出。如果文件中字符个数不足输出。如果文件中字符个数不足100

30、,则读取文件中的所有内容。例如,若文件,则读取文件中的所有内容。例如,若文件内容是:内容是:This is a test file,则读取的字符串为,则读取的字符串为:This is a test file。武汉工程职业技术学院武汉工程职业技术学院262610.3.2 字符串读写函数字符串读写函数fgets和和fputs2.写字符串函数写字符串函数fputsfputs函数的功能是将字符串写入到指定的文件中,函数调函数的功能是将字符串写入到指定的文件中,函数调用的一般格式为:用的一般格式为:fputs(字符串字符串,文件指针文件指针);其中,字符串可以是字符串常量,也可以是字符数组名或其中,字符

31、串可以是字符串常量,也可以是字符数组名或字符指针变量。字符指针变量。例如:例如:fputs(abc,fp);表示把字符串表示把字符串“abc”写入写入fp所指向的文件中。如果写入所指向的文件中。如果写入成功,函数返回值为成功,函数返回值为0;如果写入失败,返回非;如果写入失败,返回非0值。值。武汉工程职业技术学院武汉工程职业技术学院【例【例10.5】实现将一个字符串写到文件的末尾,如果需要将】实现将一个字符串写到文件的末尾,如果需要将文件追加到已有文件的末尾,打开方式为文件追加到已有文件的末尾,打开方式为at+。程序如下:程序如下:#include#include int main(void)

32、FILE*file;char line100;file=fopen(D:DataTest.txt,at+);/*打开文件打开文件*/10.3.2 字符串读写函数字符串读写函数fgets和和fputs武汉工程职业技术学院武汉工程职业技术学院282810.3.2 字符串读写函数字符串读写函数fgets和和fputsif(file=NULL)puts(打开文件失败打开文件失败n);/*将字符串写入到文件的末尾将字符串写入到文件的末尾*/fputs(写入字符串到文件中写入字符串到文件中n,file);fclose(file);getchar();return 0;程序分析:程序分析:运行程序后,会把字

33、符串运行程序后,会把字符串“写入字符串到文件中写入字符串到文件中”添加到添加到“D:DataTest.txt”文件的末尾。文件的末尾。武汉工程职业技术学院武汉工程职业技术学院292910.3.3 数据块读写函数数据块读写函数fread和和fwrite有时需要一次读写一组数据,即以数据块为存放单位,例如数有时需要一次读写一组数据,即以数据块为存放单位,例如数组或结构体数据。组或结构体数据。C语言提供了数据块读写函数语言提供了数据块读写函数fread和和fwrite,可,可以一次读写大量数据。以一次读写大量数据。1.数据块读函数数据块读函数freadfread函数的功能是从文件指针指定的文件中读取

34、指定长度的数函数的功能是从文件指针指定的文件中读取指定长度的数据块,函数调用的一般格式为:据块,函数调用的一般格式为:fread(buffer,size,count,fp);说明:说明:(1)buffer:是数据块的指针。对于:是数据块的指针。对于fread函数,它用来存放输入函数,它用来存放输入数据的首地址;对于数据的首地址;对于fwrite函数,它用来存放输出数据的首地址。函数,它用来存放输出数据的首地址。(2)size:表示数据块的字节数。:表示数据块的字节数。(3)count:指定每读:指定每读/写一次,输入或输出数据块的个数。写一次,输入或输出数据块的个数。(4)fp:文件型指针。:

35、文件型指针。武汉工程职业技术学院武汉工程职业技术学院303010.3.3 数据块读写函数数据块读写函数fread和和fwrite2.数据块写函数数据块写函数fwritefwrite函数的功能是向文件中写入一块数据,函数调用的函数的功能是向文件中写入一块数据,函数调用的一般格式为:一般格式为:fwrite(buffer,size,count,fp);其中,其中,buffer用来存放输出数据的首地址;用来存放输出数据的首地址;count是要写是要写入的数据块块数。入的数据块块数。【例【例10.6】打开一个文件,向文件中写入一组数据,并关】打开一个文件,向文件中写入一组数据,并关闭文件。然后,再打开

36、此文件,从文件中读取其中的数据。闭文件。然后,再打开此文件,从文件中读取其中的数据。程序如下:程序如下:#include int main(void)FILE*file;char list30;武汉工程职业技术学院武汉工程职业技术学院3131 int i,numread,numwritten;file=fopen(D:DataTest.txt,wt);/*打开文件写入数据打开文件写入数据*/if(file!=NULL)for(i=0;i 25;i+)listi=(char)(z-i);/*写数据到文件中写数据到文件中*/numwritten=fwrite(list,sizeof(char),2

37、5,file);printf(写了写了:%d 项项n,numwritten);fclose(file);10.3.3 数据块读写函数数据块读写函数fread和和fwrite武汉工程职业技术学院武汉工程职业技术学院3232else printf(打开文件失败打开文件失败n);/*打开文件读取数据打开文件读取数据*/file=fopen(D:DataTest.txt,rt);if(file!=NULL)/*读取字符读取字符*/numread=fread(list,sizeof(char),25,file);printf(读取的字字符数:读取的字字符数:%dn,numread);printf(读取的

38、内容为:读取的内容为:%.25sn,list);fclose(file);10.3.3 数据块读写函数数据块读写函数fread和和fwrite武汉工程职业技术学院武汉工程职业技术学院3333 else printf(打开文件失败打开文件失败n);getchar();10.3.3 数据块读写函数数据块读写函数fread和和fwrite程序分析:程序分析:运行程序后,打开文件运行程序后,打开文件“Test.txt”,循环写入字符到一,循环写入字符到一个字符数组中,使用写字符串函数,把字符数组中的一组数个字符数组中,使用写字符串函数,把字符数组中的一组数据写入到文件中,并关闭文件。接着,再打开此文件

39、,使用据写入到文件中,并关闭文件。接着,再打开此文件,使用读字符串函数,把文件中的内容读取出来。读字符串函数,把文件中的内容读取出来。武汉工程职业技术学院武汉工程职业技术学院343410.3.4 格式化读写函数和格式化读写函数和fscanf和和fprintf格式化读写函数也能实现文件的读写操作,与前面介绍的格式化读写函数也能实现文件的读写操作,与前面介绍的读写函数的区别在于格式化读写函数实现了按照一定的格式来读写函数的区别在于格式化读写函数实现了按照一定的格式来读写文件的内容。读写文件的内容。1.格式化读函数格式化读函数fscanffscanf函数的功能是从指定的文件中读取指定格式的数据,函数

40、的功能是从指定的文件中读取指定格式的数据,函数调用的一般格式为:函数调用的一般格式为:fscanf(文件指针文件指针,格式字符串格式字符串,输入表列输入表列);其中,格式字符串表示读取数据的格式;输入表列中包含其中,格式字符串表示读取数据的格式;输入表列中包含待读取的常量、变量或字符串。待读取的常量、变量或字符串。例如:例如:fscanf(fp,%d%s,&a,name);表示从文件指针指向的文件中,按照格式字符串所规定的表示从文件指针指向的文件中,按照格式字符串所规定的格式读取数据。格式读取数据。武汉工程职业技术学院武汉工程职业技术学院353510.3.4 格式化读写函数和格式化读写函数和f

41、scanf和和fprintf2.格式化写函数格式化写函数fprintffprintf函数的功能将格式化的数据写入到指定的文件中,函数的功能将格式化的数据写入到指定的文件中,函数调用的一般格式为:函数调用的一般格式为:fprintf(文件指针文件指针,格式字符串格式字符串,输出表列输出表列);例如:例如:fprintf(fp,%d%c,a,ch);表示按照格式字符串所规定的格式,写入数据到文件指针表示按照格式字符串所规定的格式,写入数据到文件指针指向的文件中。指向的文件中。武汉工程职业技术学院武汉工程职业技术学院363610.3.4 格式化读写函数和格式化读写函数和fscanf和和fprintf

42、【例【例10.7】实现格式化写入数据到文件,然后格式化读取文件的内容,】实现格式化写入数据到文件,然后格式化读取文件的内容,并显示出来。并显示出来。程序如下:程序如下:#include#include int main(void)FILE*file;long l;float fp;char s81;char c;file=fopen(D:DataTest.txt,w+);/*打开文件打开文件*/if(file=NULL)武汉工程职业技术学院武汉工程职业技术学院373710.3.4 格式化读写函数和格式化读写函数和fscanf和和fprintfputs(打开文件失败打开文件失败n);/*格式化写

43、文件格式化写文件*/fprintf(file,%s%ld%f%c,a-string,65000,3.14159,x);fseek(file,0L,SEEK_SET);/*定位文件指针到文件的开始位置,定位文件指针到文件的开始位置,fseek为文件内部指针定位函数,可实现文件内部指针的移动为文件内部指针定位函数,可实现文件内部指针的移动*/*格式化读文件的内容格式化读文件的内容*/fscanf(file,%s,s);fscanf(file,%ld,&l);fscanf(file,%f,&fp);fscanf(file,%c,&c);/*显示读出的内容显示读出的内容*/printf(%sn,s);

44、printf(%ldn,l);武汉工程职业技术学院武汉工程职业技术学院383810.3.4 格式化读写函数和格式化读写函数和fscanf和和fprintfprintf(%fn,fp);printf(%cn,c);fclose(file);getchar();return 0;程序分析:程序分析:运行程序后,会写入字符串运行程序后,会写入字符串“a-string 65000 3.141590 x”到文件中。然后,重新定位文件位置指针到文件开始处,格到文件中。然后,重新定位文件位置指针到文件开始处,格式化读取文件的内容,并显示出来。式化读取文件的内容,并显示出来。武汉工程职业技术学院武汉工程职业技

45、术学院10.4 随机文件的读写随机文件的读写3939前面介绍的顺序文件的读写操作,在读写文件的过程中,前面介绍的顺序文件的读写操作,在读写文件的过程中,文件位置指针会自动向后移动,依次从文件头读文件位置指针会自动向后移动,依次从文件头读/写至文件尾。写至文件尾。但在实际应用中,读但在实际应用中,读/写完一个数据之后,并不一定要访问下一写完一个数据之后,并不一定要访问下一个数据,而可能会访问其他位置的数据,这就是个数据,而可能会访问其他位置的数据,这就是文件随机访问。文件随机访问。在在C语言中,通过语言中,通过rewind、fseek和和ftell函数可以实现文件函数可以实现文件的随机读写功能。

46、的随机读写功能。1.重置文件位置指针函数重置文件位置指针函数rewindrewind函数的功能是将文件的位置指针移到文件首,该函函数的功能是将文件的位置指针移到文件首,该函数无返回值。函数调用的一般格式为:数无返回值。函数调用的一般格式为:rewind(文件指针文件指针);例如:例如:rewind(fp);其中,其中,fp是文件指针,指向所操作的文件。是文件指针,指向所操作的文件。武汉工程职业技术学院武汉工程职业技术学院404010.4 随机文件的读写随机文件的读写2.移动文件位置指针函数移动文件位置指针函数fseekfseek函数的功能是将文件的位置指针指向指定位置,函数调用函数的功能是将文

47、件的位置指针指向指定位置,函数调用的一般格式为:的一般格式为:fseek(文件指针文件指针,位移量位移量,起始点起始点);其中,文件指针指向当前操作的文件;位移量为文件位置指针其中,文件指针指向当前操作的文件;位移量为文件位置指针移动读写位置的偏移量;起始点表示文件位置指针的起始位置,起移动读写位置的偏移量;起始点表示文件位置指针的起始位置,起始点的值有始点的值有3个,文件头、文件当前位置和文件尾,具体如下:个,文件头、文件当前位置和文件尾,具体如下:(1)SEEK_SET:对应的数值为:对应的数值为0,表示文件位置指针从文件头,表示文件位置指针从文件头进行偏移。进行偏移。(2)SEEK_CU

48、R:对应的数值为:对应的数值为1,表示文件位置指针从文件当,表示文件位置指针从文件当前位置进行偏移。前位置进行偏移。(3)SEEK_END:对应的数值为:对应的数值为2,表示文件位置指针从文件末,表示文件位置指针从文件末尾进行偏移。尾进行偏移。武汉工程职业技术学院武汉工程职业技术学院41413.获取文件位置指针当前值函数获取文件位置指针当前值函数ftellftell函数的功能是获取文件位置指针的当前位置,函数调用函数的功能是获取文件位置指针的当前位置,函数调用的一般格式为:的一般格式为:ftell(文件指针文件指针);例如:例如:ftell(fp);ftell函数调用成功后,返回文件位置指针的

49、当前位置,如果函数调用成功后,返回文件位置指针的当前位置,如果调用时出现错误,则返回长整型调用时出现错误,则返回长整型-1L。【例例10.7】通过使用通过使用fseek函数实现文件内容的随机读取函数实现文件内容的随机读取。10.4 随机文件的读写随机文件的读写程序如下:程序如下:#include#include int main(void)FILE*file;武汉工程职业技术学院武汉工程职业技术学院4242 char line81;int result;file=fopen(D:DataTest.txt,w+);if(file=NULL)puts(打开文件失败打开文件失败n);fprintf(

50、file,%s,fseek实现文件内部位置指针的定位实现文件内部位置指针的定位);/*移动位置到第二个字符的位置移动位置到第二个字符的位置*/fseek(file,1,SEEK_SET);/*在新的位置读取字符串在新的位置读取字符串*/fgets(line,80,file);/*输出读取的字符串输出读取的字符串*/10.4 随机文件的读写随机文件的读写武汉工程职业技术学院武汉工程职业技术学院4343printf(读取的内容读取的内容:%s,line);fclose(file);getchar();return 0;程序分析:程序分析:运行程序后,会向文件中写入字符串运行程序后,会向文件中写入字

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《C语言程序设计教程》课件第10章 文件.ppt)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|