第7章处理程序设计.ppt

上传人:hyn****60 文档编号:70681231 上传时间:2023-01-24 格式:PPT 页数:82 大小:1.05MB
返回 下载 相关 举报
第7章处理程序设计.ppt_第1页
第1页 / 共82页
第7章处理程序设计.ppt_第2页
第2页 / 共82页
点击查看更多>>
资源描述

《第7章处理程序设计.ppt》由会员分享,可在线阅读,更多相关《第7章处理程序设计.ppt(82页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第第第7 77 7章章章章 文件处理程序设计文件处理程序设计文件处理程序设计文件处理程序设计主讲:甘玲主讲:甘玲本章内容本章内容如何将一个文件复制到另一个文件如何将一个文件复制到另一个文件1如何读取某个客户的银行帐号信息如何读取某个客户的银行帐号信息2n文件的打开和关闭文件的打开和关闭n出错检查出错检查n文件的顺序读写文件的顺序读写n文件定位文件定位n文件的随机读写文件的随机读写2023/1/222解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计3提出问题提出问题v如何将一个文件的内容复制到另一个文件如何将一个文件的内容复制到另一个文件中?中?2023/1/22解析解析

2、C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计问题的分析问题的分析v前面程序处理的数据要么是直接写在程序前面程序处理的数据要么是直接写在程序中,要么是在程序运行时由键盘输入,而中,要么是在程序运行时由键盘输入,而程序的处理结果只在屏幕上显示。当程序程序的处理结果只在屏幕上显示。当程序要处理大量数据时,这种数据处理方式就要处理大量数据时,这种数据处理方式就会带来诸多不便。会带来诸多不便。2023/1/224解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计问题的分析问题的分析v操作系统是以文件为单位对数据进行管理操作系统是以文件为单位对数据进行管理的,如果要找

3、外存上的数据,必须先按文的,如果要找外存上的数据,必须先按文件名找到指定的文件,然后再从该文件中件名找到指定的文件,然后再从该文件中读取数据;如果要向外部介质上存储数据读取数据;如果要向外部介质上存储数据也必须先建立一个文件才能向它输出数据。也必须先建立一个文件才能向它输出数据。v文件中最常见的操作就是将一个文件中的文件中最常见的操作就是将一个文件中的内容复制到另一个文件中去。哪么文件是内容复制到另一个文件中去。哪么文件是什么呢?什么呢?2023/1/225解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计文件是什么?文件是什么?v所谓所谓“文件文件”一般指存储在介质上的数

4、据一般指存储在介质上的数据的集合。的集合。v在在C语言中,文件就是由一个一个的字符或语言中,文件就是由一个一个的字符或字节的数据顺序组成的字符或字节序列。字节的数据顺序组成的字符或字节序列。v换句话说,换句话说,C语言把文件看作是一个有序的语言把文件看作是一个有序的字节流。字节流。2023/1/226解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计vC语言对文件的存取是以字节为单位的,也语言对文件的存取是以字节为单位的,也就意味着以字符形式进行操作。就意味着以字符形式进行操作。v每一个文件通常以文件结束标志(每一个文件通常以文件结束标志(end-of-file,也就是,也

5、就是EOF)结束,)结束,2023/1/227解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计文件的分类文件的分类从用户的角度从用户的角度文件分为文件分为标准设备文件普通磁盘文件从文件编码方式从文件编码方式文件分为文件分为ASCII文件二进制文件2023/1/228解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计文件的分类文件的分类 v从用户的角度分文件分为从用户的角度分文件分为标准设备文件标准设备文件普通磁盘文件普通磁盘文件v把外部设备也看作是一个文件来进行管理,把外部设备也看作是一个文件来进行管理,把它们的输入、输出等同于对磁盘文件的把它们的输入

6、、输出等同于对磁盘文件的读和写。读和写。2023/1/229解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计v键盘为标准的输入文件,文件指针为键盘为标准的输入文件,文件指针为stdinstdin。从键盘上输入就意味着从标准输入文件上从键盘上输入就意味着从标准输入文件上输入数据。如输入数据。如scanfscanf、getchargetchar函数。函数。v显示器为标准输出文件,文件指针为显示器为标准输出文件,文件指针为stdoutstdout。在屏幕上显示有关信息就是向标。在屏幕上显示有关信息就是向标准输出文件输出。如准输出文件输出。如printfprintf、putcha

7、rputchar函数。函数。v标准错误输出也是标准设备文件,文件指标准错误输出也是标准设备文件,文件指针为针为stderrstderr。2023/1/2210解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计v本章所讲的文件主要是针对普通的磁盘文件。本章所讲的文件主要是针对普通的磁盘文件。2023/1/2211解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计文件的分类文件的分类v从文件编码的方式分从文件编码的方式分:ASCIIASCII码文件。码文件。在磁在磁盘盘中存放中存放时时每个字符每个字符对应对应一个字一个字节节,用于存放,用于存放对应对应的的A

8、SCIIASCII码码。二进制文件。数据按其在内存中的存储形式原二进制文件。数据按其在内存中的存储形式原样存放。样存放。2023/1/2212解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计vASCII文件也称文本文件。文件也称文本文件。vASCII文件在磁盘中存放时,每个字符对文件在磁盘中存放时,每个字符对应一个字节,用于应一个字节,用于存放对应的存放对应的ASCII码码。如:整型十进制数如:整型十进制数5678,按,按ASCII文件文件存放则需要占用存放则需要占用4个字节。个字节。2023/1/2213解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序

9、设计v二进制文件:是对不同的数据类型,按其二进制文件:是对不同的数据类型,按其实际占用内存字节数实际占用内存字节数存放。即内存的存储存放。即内存的存储形式,原样输出到磁盘上存放。如:整型形式,原样输出到磁盘上存放。如:整型十进制数十进制数5678,按二进制文件存放只需,按二进制文件存放只需要要2个字节。个字节。2023/1/2214解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计0010111000010110001011100001011000110110001101010011100000110111ASCII形式形式二进制形式二进制形式内存中的内存中的存储形式存储形

10、式2023/1/2215解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计v例如:十进制整数例如:十进制整数1234512345的存储形式如图的存储形式如图7-7-2 2所示。按所示。按ASCIIASCII码形式存储共占用码形式存储共占用5 5个字节,个字节,而采用二进制形式存储只需要而采用二进制形式存储只需要2 2个字节。个字节。2023/1/2216解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计 内存存储形式内存存储形式 二进制文件形式二进制文件形式 00110000 00111001 00110000 00111001 图图7-2 7-2 两种

11、文件形式与内存形式之间关系两种文件形式与内存形式之间关系 1的的ASCII 2(50)3(51)4(52)5(53)码为码为(49)ASCII文件(文本文件)形式文件(文本文件)形式 00110010 00110011 00110100 00110101 001100012023/1/2217解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计vASCIIASCII码文件可在屏幕上按字符显示,例如码文件可在屏幕上按字符显示,例如源程序文件就是源程序文件就是ASCIIASCII文件,用文件,用DOSDOS命令命令TYPETYPE可显示文件的内容。可显示文件的内容。v由于是按字符

12、显示,因此由于是按字符显示,因此能读懂能读懂文件内容。文件内容。占用占用存储空间大存储空间大,在进行读、写操作时要,在进行读、写操作时要进行二进制与十进制之间的相互进行二进制与十进制之间的相互转换转换,效效率低率低。2023/1/2218解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计v二进制文件虽然也可在屏幕上显示,但其二进制文件虽然也可在屏幕上显示,但其内容内容无法读懂无法读懂。但二进制文件占用。但二进制文件占用存储空存储空间少间少,在进行读、写操作时,在进行读、写操作时不不用进行二进用进行二进制与十进制之间的相互制与十进制之间的相互转换转换,效率高效率高。2023/

13、1/2219解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计文件系统文件系统 v根据操作系统对文件的处理方式的不同,根据操作系统对文件的处理方式的不同,把文件系统分为把文件系统分为缓冲文件系统缓冲文件系统非缓冲文件系统非缓冲文件系统vANSI C标准采用缓冲文件系统。标准采用缓冲文件系统。2023/1/2220解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计缓冲文件系统缓冲文件系统v缓冲文件系统是指操作系统在内存中为每缓冲文件系统是指操作系统在内存中为每一个正在使用的文件开辟一个读写缓冲区。一个正在使用的文件开辟一个读写缓冲区。如图如图7-1所示。所

14、示。2023/1/2221解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计 图图 7-1 缓冲文件系统示意图缓冲文件系统示意图 内内 存存 输出输出 (写写)输入输入(读读)外存外存 输出缓冲区输出缓冲区 文件文件 输输 入入 输入缓冲区输入缓冲区 程序数据区程序数据区 输出输出 2023/1/2222解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计v在输入数据时,先把数据从磁盘读到在输入数据时,先把数据从磁盘读到“输输入缓冲区入缓冲区”,等输入缓冲区已满或强制把,等输入缓冲区已满或强制把它清空时再把其中的数据送到程序数据区它清空时再把其中的数据送到

15、程序数据区进行处理。进行处理。v处理完后的数据要送到文件中保存,先放处理完后的数据要送到文件中保存,先放到到“输出文件缓冲区输出文件缓冲区”,等输出缓冲区已,等输出缓冲区已满或强制把它清空时再把其中的数据送到满或强制把它清空时再把其中的数据送到磁盘文件。磁盘文件。2023/1/2223解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计非缓冲文件系统非缓冲文件系统v非缓冲文件系统指系统不自动开辟确定大非缓冲文件系统指系统不自动开辟确定大小的内存缓冲区,而是由程序自己为每个小的内存缓冲区,而是由程序自己为每个文件设定缓冲区。文件设定缓冲区。2023/1/2224解析解析C程序设

16、计第程序设计第7章章 文件处理程序设计文件处理程序设计v在在C语言中,没有专门的文件输入输出语句,语言中,没有专门的文件输入输出语句,对文件的读写都是用库函数来实现的。对文件的读写都是用库函数来实现的。v基本的文件操作都在标准基本的文件操作都在标准I/O库接口库接口stdio.h中。中。2023/1/2225解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计v调用磁盘上的一个文件时,必须知道与该调用磁盘上的一个文件时,必须知道与该文件有关的信息。比如文件名字、文件的文件有关的信息。比如文件名字、文件的当前读写位置、文件缓冲区大小与位置、当前读写位置、文件缓冲区大小与位置、文

17、件的操作方式等。这些信息被文件的操作方式等。这些信息被C C语言系统语言系统保存在一个称作保存在一个称作FILEFILE的结构体的结构体中,通常它中,通常它被放在被放在stdio.hstdio.h头文件内。头文件内。2023/1/2226解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计typedef structtypedef struct int level;/*int level;/*缓冲区缓冲区“满满”或或“空空”的程度的程度*/unsigned flags;/*unsigned flags;/*文件状态标志文件状态标志*/char fd;/*char fd;/*文

18、件描述符文件描述符*/unsigned char hold;/*unsigned char hold;/*如无缓冲区不读取字符如无缓冲区不读取字符*/int bsize;/*int bsize;/*缓冲区大小缓冲区大小*/unsigned char*buffer;/*unsigned char*buffer;/*数据缓冲区位置数据缓冲区位置*/unsigned char*curp;/*unsigned char*curp;/*文件定位指针文件定位指针*/unsigned istemp;/*unsigned istemp;/*临时文件指示器临时文件指示器*/short token;/*short

19、 token;/*用于有效性检查用于有效性检查*/FILE;FILE;2023/1/2227解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计文件指针v对于每一个要操作的文件,都必须定义一对于每一个要操作的文件,都必须定义一个指针变量,并使它指向该文件结构体变个指针变量,并使它指向该文件结构体变量,这个指针称为量,这个指针称为文件指针文件指针。v通过文件指针找到被操作文件的描述信息,通过文件指针找到被操作文件的描述信息,就可对它所指的文件进行各种操作。就可对它所指的文件进行各种操作。FILE*FILE*指指针变针变量量标识标识符;符;v其中其中FILEFILE应为应为大写。

20、大写。2023/1/2228解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计文件的操作文件的操作v对文件的操作的一般步骤包括对文件的操作的一般步骤包括:打开文件打开文件文件的读写文件的读写关闭文件关闭文件v在语言中,文件操作都是由在语言中,文件操作都是由库函数库函数来完来完成的。这些库函数包含在成的。这些库函数包含在stdio.h头文件头文件中。中。2023/1/2229解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计文件的打开与关闭文件的打开与关闭 v打开文件打开文件是建立文件的各种有关信息,并是建立文件的各种有关信息,并使文件指针指向该文件,以便

21、进行其它各使文件指针指向该文件,以便进行其它各种操作。种操作。v关闭文件关闭文件是断开指针与文件之间的联系,是断开指针与文件之间的联系,禁止再对该文件进行操作。禁止再对该文件进行操作。2023/1/2230解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计文件的打开文件的打开 文件指针名文件指针名=fopen(文件名文件名,使用文件方式使用文件方式);如:如:FILE*fp1;fp1=fopen(c:tttest.exe,rb);v其意义是打开其意义是打开C驱动器磁盘的驱动器磁盘的tt目录下的文件目录下的文件test.exe,这是一个二进制文件,只允许按二,这是一个二进制文

22、件,只允许按二进制方式进行读操作。两个反斜线进制方式进行读操作。两个反斜线“”中的第中的第一个表示转义字符,第二个表示根目录。一个表示转义字符,第二个表示根目录。2023/1/2231解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计文件的打开文件的打开v文件的打开使用函数文件的打开使用函数fopen(),函数原型,函数原型为:为:FILE*fopen(char*filename,char*type);vfilename为需要打开的文件名,为需要打开的文件名,type为为文件打开的类型,也是一个字符串,用于文件打开的类型,也是一个字符串,用于确定文件的使用方式,可以选用的方

23、式如确定文件的使用方式,可以选用的方式如下:下:2023/1/2232解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计v“r”:文件以:文件以“读读”方式打开,文件指针只能用于方式打开,文件指针只能用于输入操作,并且文件必须已经存在。输入操作,并且文件必须已经存在。v“w”:文件以:文件以“写写”方式打开,文件指针只能用方式打开,文件指针只能用于输出操作,如果文件不存在,将会用指定的文于输出操作,如果文件不存在,将会用指定的文件名创建一个新文件。如果已存在同名文件,那件名创建一个新文件。如果已存在同名文件,那么此同名文件的内容会被删除。么此同名文件的内容会被删除。v“a”

24、:文件以:文件以“追加追加”方式打开,此模式与方式打开,此模式与“w”模式相似,返回的指针都可以用于输出操模式相似,返回的指针都可以用于输出操作;它们的区别在于,如果文件已经存在,本方作;它们的区别在于,如果文件已经存在,本方式将不会删除原来的内容,而是向文件的末端写式将不会删除原来的内容,而是向文件的末端写入新信息。入新信息。v文件常用的访问模式如表文件常用的访问模式如表7-1所示。所示。2023/1/2233解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计文件使用方式文件使用方式意义意义 r只读打开一个文本文件,只允许读数据只读打开一个文本文件,只允许读数据 w只写打

25、开或建立一个文本文件,只允许写数据只写打开或建立一个文本文件,只允许写数据 a追加打开一个文本文件,并在文件末尾写数据追加打开一个文本文件,并在文件末尾写数据 rb只读打开一个二进制文件,只允许读数据只读打开一个二进制文件,只允许读数据 wb只写打开或建立一个二进制文件,只允许写数据只写打开或建立一个二进制文件,只允许写数据 ab追加打开一个二进制文件,并在文件末尾写数据追加打开一个二进制文件,并在文件末尾写数据 r+读写打开一个文本文件,允许读和写读写打开一个文本文件,允许读和写 w+读写打开或建立一个文本文件,允许读写读写打开或建立一个文本文件,允许读写 a+读写打开一个文本文件,允许读,

26、或在文件末追加数据读写打开一个文本文件,允许读,或在文件末追加数据 rb+读写打开一个二进制文件,允许读和写读写打开一个二进制文件,允许读和写 wb+读写打开或建立一个二进制文件,允许读和写读写打开或建立一个二进制文件,允许读和写 ab+读写打开一个二进制文件,允许读,或在文件末追加数据读写打开一个二进制文件,允许读,或在文件末追加数据2023/1/2234解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计文件的关闭文件的关闭 fclose(fclose(文件指针文件指针);v功能:使文件指针变量与文件功能:使文件指针变量与文件“脱钩脱钩”,释放文件结构体和文件指针。释放文

27、件结构体和文件指针。v返回值:关闭成功时返回值为返回值:关闭成功时返回值为0 0。否则。否则(如如磁盘空间不足、写保护或关闭已经关闭的磁盘空间不足、写保护或关闭已经关闭的文件文件)返回返回EOFEOF,即,即-1-1。2023/1/2235解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计v文件的关闭使用函数文件的关闭使用函数fclose(),函数原型,函数原型为:为:int fclose(FILE*stream);v其中:其中:stream为文件流指针。它的作用为文件流指针。它的作用是使文件指针变量不再指向该文件,同时是使文件指针变量不再指向该文件,同时关闭文件。当文件正

28、常关闭时,返回关闭文件。当文件正常关闭时,返回0值;值;当文件关闭失败时,返回非当文件关闭失败时,返回非0值。值。2023/1/2236解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计【例例7-2】打开打开test.txt文件。文件。v#include v#include vvoid main()v FILE*fp;/*定义文件指针定义文件指针*/v fp=fopen(test.txt,w);/*以写方式打开文件以写方式打开文件test.txt*/v if(fp=NULL)v printf(file open error!n);v exit(0);/*终止程序运行,返回操

29、作系统终止程序运行,返回操作系统0值值*/v v elsev printf(fiel open OK!n);v fclose(fp);/*关闭文件关闭文件*/v2023/1/2237解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计exit函数函数v原型为:原型为:void exit(int status);v功能:终止程序。它将功能:终止程序。它将status的值发送给的值发送给DOS环境变量。它在环境变量。它在stdlib.h中声明。中声明。2023/1/2238解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计出错检查出错检查 v文件在进行打开操作

30、的时候,并不能保证文件在进行打开操作的时候,并不能保证每次操作都会成功,操作也可能失败。每次操作都会成功,操作也可能失败。v如果需要的文件不存在或者发现其他错误,如果需要的文件不存在或者发现其他错误,那么那么fopen函数调用将返回指针值函数调用将返回指针值NULL,表示有错误发生。作为程序员,应该检,表示有错误发生。作为程序员,应该检查错误并且进行相应的错误报告。一般查错误并且进行相应的错误报告。一般C系系统都提供了库函数检测错误,主要错误检统都提供了库函数检测错误,主要错误检测函数如下:测函数如下:2023/1/2239解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计

31、1错误报告函数的原型为:错误报告函数的原型为:void error(char*errorstring);2文件结束检测错误函数的原型为:文件结束检测错误函数的原型为:int feof(FILE*stream);3文件出错检测函数的原型为:文件出错检测函数的原型为:int ferror(FILE*stream);4清除文件错误标志函数的原型为:清除文件错误标志函数的原型为:void clearerr(FILE*stream);2023/1/2240解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计错误处理错误处理#include#include#include#include

32、 void main()/*c:abc.abc文件并不存在文件并不存在*/int fh=open(c:abc.abc,O_RDONLY|O_BINARY);if(fh=-1)/*fh必然为必然为-1*/perror(Cant open c:abc.abc.Error);Cant open c:abc.abc.Error:No such file or directoryCant open c:abc.abc.Error:No such file or directory2023/1/2241解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计顺序文件的读写顺序文件的读写 v文

33、件的顺序读写,是指文件被打开后,按文件的顺序读写,是指文件被打开后,按照数据流的先后顺序对文件进行读写操作。照数据流的先后顺序对文件进行读写操作。每读写一次后,文件指针自动指向下一个每读写一次后,文件指针自动指向下一个读写位置。读写位置。v在语言中提供了多种文件读写的函数,在语言中提供了多种文件读写的函数,分别如下:分别如下:(1)字符读写函数:)字符读写函数:fgetc和和fputc。(2)字符串读写函数:)字符串读写函数:fgets和和fputs。(3)格式化读写函数:)格式化读写函数:fscanf和和fprintf。2023/1/2242解析解析C程序设计第程序设计第7章章 文件处理程序

34、设计文件处理程序设计vfgetc函数函数的功能是从指定的文件中读一的功能是从指定的文件中读一个字符,函数原型为:个字符,函数原型为:int fgetc(FILE*stream);vfputc函数函数的功能是把一个字符写入指定的功能是把一个字符写入指定的文件中,函数原型为:的文件中,函数原型为:int fputc(char ch,FILE*stream);2023/1/2243解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计v【例例例例7-37-3】从键盘输入字符存入文件中,以从键盘输入字符存入文件中,以从键盘输入字符存入文件中,以从键盘输入字符存入文件中,以#号号号号结束

35、。结束。结束。结束。2023/1/2244解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计v#include v#include vvoid main()v FILE*fp;v char ch,filename10;v scanf(%s,filename);v if(fp=fopen(filename,w)=NULL)/*建立并打开新文件建立并打开新文件*/v printf(cannot open file!n);v exit(0);/*终止程序终止程序*/v v ch=getchar();/*读读scanf的回车符的回车符*/v ch=getchar();/*输入第一个

36、字符输入第一个字符*/v while(ch!=#)/*如果输入如果输入#号则结束号则结束*/v fputc(ch,fp);/*将将ch写入写入fp所指向的文件所指向的文件*/v putchar(ch);/*将将ch在屏幕上输出,即写入在屏幕上输出,即写入stdin所指向的文件所指向的文件*/v ch=getchar();v v fclose(fp);/*关闭文件关闭文件*/v2023/1/2245解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计vfgets函数函数的功能是从的功能是从fp所指向的文件中所指向的文件中读读n-1个个字符,放到以字符,放到以string为起始地

37、址为起始地址的存储空间的存储空间(string可以是数组名可以是数组名)。函数。函数原型为:原型为:char *fgets(char *string,int n,FILE *fp);2023/1/2246解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计v【例例7-4】从从temp.txt文件中读入一个含文件中读入一个含10个个字符的字符串。字符的字符串。2023/1/2247解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计v#includev#include vvoid main()vv FILE*fp;vchar str11;vif(fp=fope

38、n(temp.txt,r)=NULL)/*以只读方式打开以只读方式打开一个文件一个文件*/vvprintf(Cannot open file strike any key exit!);vgetch();vexit(1);/*打开不成功的处理方式打开不成功的处理方式*/vvfgets(str,11,fp);/*打开文件成功,读取打开文件成功,读取10个字符,放在个字符,放在str串串中中*/vprintf(%s,str);/*打印读取字符串打印读取字符串*/vfclose(fp);/*操作完成,关闭文件操作完成,关闭文件*/v2023/1/2248解析解析C程序设计第程序设计第7章章 文件处理

39、程序设计文件处理程序设计vfputs函数函数的功能是将的功能是将string所表示的字符串内所表示的字符串内容容(不含最后的不含最后的0)输出到输出到fp所指向的文件中所指向的文件中去。函数原型为:去。函数原型为:int fputs(char *string,FILE *fp);2023/1/2249解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计v【例例7-5】向文件向文件string.txt中追加一个字符串。中追加一个字符串。2023/1/2250解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计v#includev#include vvoid m

40、ain()vFILE*fp;vchar ch,st20;vif(fp=fopen(string.txt,a)=NULL)/*以追加方式打开一个文件以追加方式打开一个文件*/vvprintf(Cannot open file strike any key exit!);vgetch();vexit(1);/*打开不成功的处理方式打开不成功的处理方式*/vvprintf(input a string:n);vscanf(%s,st);/*从键盘读入一个串从键盘读入一个串*/vfputs(st,fp);/*将串写入文件中将串写入文件中*/vfclose(fp);vif(fp=fopen(string

41、.txt,r)=NULL)vvprintf(Cannot open file strike any key exit!);vgetch();vexit(2);/*打开不成功的处理方式打开不成功的处理方式*/vvch=fgetc(fp);/*读取文件中的第一个字符读取文件中的第一个字符*/vwhile(ch!=EOF)/*反复打印读出的字符,再读下一个字符反复打印读出的字符,再读下一个字符*/vvputchar(ch);vch=fgetc(fp);vvprintf(n);vfclose(fp);/*操作完成,关闭文件操作完成,关闭文件*/v2023/1/2251解析解析C程序设计第程序设计第7章

42、章 文件处理程序设计文件处理程序设计vfscanf函数、函数、fprintf函数与前面使用的函数与前面使用的scanf和和printf函数的功能相似,都是格函数的功能相似,都是格式化读写函数。式化读写函数。v两者的区别在于两者的区别在于 fscanf函数和函数和fprintf函函数的读写对象不是键盘和显示器,而是数的读写对象不是键盘和显示器,而是磁磁盘文件盘文件。2023/1/2252解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计vfscanf函数函数的功能是按照的功能是按照format给出的控给出的控制符格式,把从制符格式,把从fp所指向的文件中读取的内所指向的文件中

43、读取的内容,分别赋给变量容,分别赋给变量arg1,argn。函数原。函数原型为型为:int fscanf(FILE*fp,char*format,&arg1,&argn)2023/1/2253解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计vfprintf函数函数的功能是按照的功能是按照format给出的给出的控制符格式,将变量控制符格式,将变量arg1,argn的值的值写入到写入到fp所指向的文件中去所指向的文件中去。函数原型为:。函数原型为:int fprintf(FILE*fp,char*format,arg1,argn)2023/1/2254解析解析C程序设计第程

44、序设计第7章章 文件处理程序设计文件处理程序设计v【例例7-6】键盘输入两个学生数据,写入键盘输入两个学生数据,写入一个文件中,一个文件中,再读出这两个学生的数据显再读出这两个学生的数据显示在屏幕上。示在屏幕上。v源代码见教材源代码见教材P2772023/1/2255解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计问题的实现(例问题的实现(例7-1)v#includev#include vvoid main()vvFILE*fp1,*fp2;/*定义文件指针定义文件指针*/源文件源文件 目标目标vchar ch,*file1,*file2;vprintf(Input so

45、urce file:);vscanf(%s,file1);/*输入源文件名输入源文件名*/vprintf(Input object file:);vscanf(%s,file2);/*输入目标文件名输入目标文件名*/vif(fp1=fopen(file1,r)=NULL)/*以只读方式打开要复制的文件以只读方式打开要复制的文件*/vvprintf(Cannot open%sn,file1);vexit(0);/*文件打开不成功的处理文件打开不成功的处理*/vvif(fp2=fopen(file2,“w”)=NULL)/*以只写的方式打开复制的目标文件以只写的方式打开复制的目标文件*/v fp2

46、=stdout;/*缺省输出文件为标准输出设备即到显示器缺省输出文件为标准输出设备即到显示器*/vwhile(ch=fgetc(fp1)!=EOF)/*读第一个文件的字符读第一个文件的字符*/v fputc(ch,fp2);/*复制到第二个文件复制到第二个文件*/vfclose(fp1);/*关闭文件关闭文件1*/vfclose(fp2);/*关闭文件关闭文件2*/v2023/1/2256解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计举一反三举一反三v【例例7-7】读入文件读入文件temp.c,在屏幕上输出。,在屏幕上输出。v#includev#include vvoi

47、d main()vvFILE*fp;/*定义文件指针定义文件指针*/vchar ch;vif(fp=fopen(temp.c,r)=NULL)/*以只读方式打开文件以只读方式打开文件*/vv printf(Cannot open file strike any key exit!);v getch();v exit(1);/*文件打开不成功的处理文件打开不成功的处理*/vv ch=fgetc(fp);/*读文件的第一个字符读文件的第一个字符*/vwhile(ch!=EOF)/*读文件没有到文件尾读文件没有到文件尾*/vvputchar(ch);/*输出刚刚读入的字符输出刚刚读入的字符*/vch

48、=fgetc(fp);/*读下一个字符读下一个字符*/vv fclose(fp);/*关闭文件关闭文件*/v 2023/1/2257解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计v#includev#include vvoid main()vvFILE*fp;/*定义文件指针定义文件指针*/vchar ch;vif(fp=fopen(string,wb+)=NULL)/*以读写方以读写方式打开文件式打开文件*/vv printf(Cannot open file strike any key exit!);v getch();v exit(1);/*文件打开不成功的处理

49、文件打开不成功的处理*/v【例例7-8】从键盘输入一行字符,写入一个文件,从键盘输入一行字符,写入一个文件,再把该文件内容读出显示再把该文件内容读出显示在屏幕上在屏幕上。2023/1/2258解析解析C程序设计第程序设计第7章章 文件处理程序设计文件处理程序设计vprintf(input a string:n);vch=getchar();/*读入一行字符,每次只读一个读入一行字符,每次只读一个*/vwhile(ch!=n)vv fputc(ch,fp);/*写字符到文件中写字符到文件中*/v ch=getchar();/*读下一个字符读下一个字符*/vvif(fp=fopen(string,

50、rb)=NULL)/*以读方式打开文件以读方式打开文件*/vv printf(Cannot open file strike any key exit!);v getch();v exit(2);/*文件打开不成功的处理文件打开不成功的处理*/vvch=fgetc(fp);/*读第一个字符读第一个字符*/vwhile(ch!=EOF)vv putchar(ch);/*输出字符输出字符*/v ch=fgetc(fp);/*读下一个字符读下一个字符*/vvprintf(n);vfclose(fp);/*关闭文件关闭文件*/v2023/1/2259解析解析C程序设计第程序设计第7章章 文件处理程序设

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁