文件操作系统管理数据的基本单位存储在外存储器上的数据的[精品ppt课件].pptx
《文件操作系统管理数据的基本单位存储在外存储器上的数据的[精品ppt课件].pptx》由会员分享,可在线阅读,更多相关《文件操作系统管理数据的基本单位存储在外存储器上的数据的[精品ppt课件].pptx(60页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 第9章 文件操作 1本章要求:本章要求:掌握掌握C语言中文件的概念语言中文件的概念掌握打开文件的不同模式掌握打开文件的不同模式掌握使用各种操作函数对文件进行读写的方法掌握使用各种操作函数对文件进行读写的方法能编写与文件有关的程序能编写与文件有关的程序本章难点:本章难点:掌握文件的各种操作函数,能对文件进行读写数据操作。掌握文件的各种操作函数,能对文件进行读写数据操作。本章重点:本章重点:掌握文件的各种操作函数,能对文件进行读写数据操作。掌握文件的各种操作函数,能对文件进行读写数据操作。第第9章章文件操作文件操作 第9章 文件操作 29.1.1文本文件与二进制文件文本文件与二进制文件nC语语言
2、言把把文文件件看看作作一一个个字字节节序序列列,即即由由一一连连串串的的字字节节组组成成,称称为为“流流”,每每一一个个字字节节都都可可以以单单独独读读取取,每每一一个个文文件件或或者者以以文文件件结结束束标标志志结结束束,或或者者在在特特定定的的字字节号处结束。节号处结束。n按数据的组织形式分类按数据的组织形式分类1、文本文件文本文件又又称称ASCII文文件件,每每个个字字节节对对应应一一个个字字符符,用用于于存存放放该该字字符的符的ASCII码码,输入输出时对字符逐个处理。,输入输出时对字符逐个处理。文文本本文文件件由由文文本本行行组组成成,每每行行中中可可以以有有0个个或或多多个个字字符
3、符,并并以以行行终终止止符符n结结尾尾,文文件件结结尾尾是是文文件件结结束束标标志志,该该标标志后再没有字符出现了。志后再没有字符出现了。2、二进制文件二进制文件数据按其在内存中的存储形式数据按其在内存中的存储形式原样存放原样存放 第9章 文件操作 30010011100010000内存存储形式内存存储形式0010011100010000二进制形式二进制形式0011000100110000001100000011000000110000ASCII形式形式文本文件特点文本文件特点:速度慢、便于对字符操作速度慢、便于对字符操作二进制文件特点二进制文件特点:速速度度快快、便便于于存存放放中间结果中间
4、结果【例例】整整数数10000 第9章 文件操作 49.1.2缓冲文件系统缓冲文件系统缓缓冲冲文文件件系系统统:系系统统自自动动地地为为每每一一个个正正在在使使用用的的文文件件在内存中在内存中开辟一个缓冲区。开辟一个缓冲区。对对输输入入输输出出进进行行缓缓冲冲,可可以以大大块块地地转转移移信信息息,而而不不再是一个个字节进行操作。再是一个个字节进行操作。内内存存缓缓冲冲区区的的大大小小,影影响响着着操操作作外外存存的的次次数数。内内存存缓缓冲冲区区越越大大,则则操操作作外外存存的的次次数数就就少少,执执行行速速度度就就快快、效率高。效率高。文件文件程序程序数据区数据区输输出出文件缓冲区文件缓冲
5、区输输入入文件缓冲区文件缓冲区 第9章 文件操作 59.1.3文件类型指针文件类型指针C语言的缓冲文件系统中,用语言的缓冲文件系统中,用文件类型指针文件类型指针来表示文件。来表示文件。定义文件类型指针的一般形式:定义文件类型指针的一般形式:FILE*指针变量名;指针变量名;C编编译译系系统统定定义义的的一一种种结结构构体体类类型型,其其中中的的成成员员用用于于存存放放有有关关文文件件的的一一些些信信息息(文文件件名名、文文件件状状态态和和文文件件当前读写位置当前读写位置等)等)指指针针变变量量用用于于指指向向一一个个文文件件,实实际际上上是是用用于于存存放放文文件件缓缓冲冲区区的首地址的首地址
6、。FILE结结构构体体是是在在头头文文件件中中定定义义的的,对对文文件件操操作作的的程程序序,在最前面都应写上文件包含命令:,在最前面都应写上文件包含命令:#includeC语言通过文件指针变量对文件进行打开、读、写及关闭操作。语言通过文件指针变量对文件进行打开、读、写及关闭操作。第9章 文件操作 6FILE结构体类型在头文件结构体类型在头文件stdio.h中定义如下:中定义如下:typedefstructshortlevel;/*文件缓冲区占用程度文件缓冲区占用程度*/unsignedflags;/*文件状态标志文件状态标志*/charfd;/*文件描述符文件描述符*/unsignedcha
7、rhold;/*若无缓冲区不读取字符若无缓冲区不读取字符*/shortbsize;/*文件缓冲区大小文件缓冲区大小*/unsignedchar*buffer;/*数据缓冲区的位置数据缓冲区的位置*/unsignedchar*curp;/*指针当前的位置指针当前的位置*/unsignedistemp;/*临时文件指示器临时文件指示器*/shorttoken;/*用于操作有效性检查用于操作有效性检查*/FILE;/*文件类型符文件类型符*/9.1.3文件类型指针文件类型指针在编程时在编程时不必关心不必关心FILE结构的具体细节结构的具体细节,只需在使用,只需在使用I/O函数函数时用这个文件指针变量
8、来指定所操作的文件。时用这个文件指针变量来指定所操作的文件。第9章 文件操作 79.1.3文件类型指针文件类型指针在在C语言程序中使用文件,需要完成以下工作:语言程序中使用文件,需要完成以下工作:1)声明一个声明一个FILE类型的文件指针变量类型的文件指针变量;2)打开文件:打开文件:调调用用fopen函函数数将将此此文文件件指指针针变变量量和和某某一一个个实实际际的的磁磁盘盘文文件件相相联联系系。要要求求指指定定文文件件名名,并并且且说说明明对对该该文文件件是是输输入入操操作作还还是是输出操作输出操作。3)读写文件:读写文件:调用调用适当的文件操作函数适当的文件操作函数完成必要的完成必要的I
9、/O操作。操作。对输入文件来说,函数从文件中将数据读取至程序中;对输入文件来说,函数从文件中将数据读取至程序中;对输出文件来说,函数将程序中的数据转移到文件中去。对输出文件来说,函数将程序中的数据转移到文件中去。4)关闭文件:关闭文件:调调用用fclose函函数数表表明明文文件件操操作作结结束束,断断开开文文件件指指针针与与实实际际文文件件之间的联系。之间的联系。第9章 文件操作 89.2文件的打开与关闭文件的打开与关闭9.2.1文件的打开文件的打开 打打开开文文件件,实实际际上上是是建建立立文文件件的的各各种种有有关关信信息息,并并使使文文件件指指针指向该文件针指向该文件;缓缓冲冲文文件件系
10、系统统借借助助文文件件指指针针来来对对文文件件进进行行管管理理和和访访问问,既既可可以以读读写写字字符符、字字符符串串、格格式式化化数数据据,也也可可以以读写二进制数据读写二进制数据。“文件名文件名”和和“文件打开模式文件打开模式”都都是是字符串常量或字符数组字符串常量或字符数组。文件指针名文件指针名=fopen(文件名文件名,文件打开模式文件打开模式)需需要要打打开开的的文件的名字文件的名字确定文件的确定文件的数据操作方式数据操作方式打开文件使用函数打开文件使用函数fopen其调用的一般形式为:其调用的一般形式为:第9章 文件操作 9举举例例FILE*fp;fp=fopen(source.t
11、xt,r);作用:作用:以读的方式(以读的方式(“r”模式即表示读模式即表示读“read”)打开打开当前目录当前目录下下文件名为文件名为source.txt的文件。的文件。如果打开文件成功,则如果打开文件成功,则返回一个指向返回一个指向source.txt文件信息区文件信息区的起始地址的指针的起始地址的指针,并赋值给,并赋值给fp,即,即fp指向了文件指向了文件source.txt。其后所有对该文件的操作都必须通过。其后所有对该文件的操作都必须通过fp指针来实现。指针来实现。如果文件打开失败,则返回一个如果文件打开失败,则返回一个空指针空指针NULL,赋值给,赋值给fp。说明:说明:文件名可以
12、包含路径和文件名两部分。文件名可以包含路径和文件名两部分。写路径时,因为转义字符以反斜杠开头,所以写路径时,因为转义字符以反斜杠开头,所以“”才是才是表示一个反斜杠表示一个反斜杠。【例例】若路径和文件名为:若路径和文件名为:“c:tcsource.txt”,则应,则应写成写成“c:tcsource.txt”。第9章 文件操作 109.2.1文件的打开文件的打开文件的打开模式文件的打开模式模式字符串模式字符串意意 义义r以以只读方式只读方式打开一个打开一个文本文件文本文件,只允许读数据,只允许读数据w以以只写只写方式打开或建立一个方式打开或建立一个文本文件文本文件,只允许写数据,只允许写数据a以
13、以追加追加方式打开一个方式打开一个文本文本文件,并在文件文件,并在文件末尾末尾写数据写数据r+以以读写读写方式打开一个方式打开一个文本文本文件,允许读和写文件,允许读和写w+以以读写读写方式打开或建立一个方式打开或建立一个文本文本文件,允许读写文件,允许读写a+以以读写读写方式打开一个方式打开一个文本文本文件,允许读,或在文件末追加数文件,允许读,或在文件末追加数rb以以只读只读方式打开一个方式打开一个二进制文件二进制文件,只允许读数据,只允许读数据wb以只写方式打开或建立一个二进制文件,只允许写数据以只写方式打开或建立一个二进制文件,只允许写数据ab以追加方式打开一个二进制文件,并在文件末尾
14、写数据以追加方式打开一个二进制文件,并在文件末尾写数据rb+以读写方式打开一个二进制文件,允许读和写以读写方式打开一个二进制文件,允许读和写wb+以读写方式打开或建立一个二进制文件,允许读和写以读写方式打开或建立一个二进制文件,允许读和写ab+以读写方式打开一个二进制文件,允许读,或在文件末追加数据以读写方式打开一个二进制文件,允许读,或在文件末追加数据 第9章 文件操作 119.2.1文件的打开文件的打开-模式说明模式说明 1)“r”模式:模式:只能用于只能用于输入(读操作),输入(读操作),且只能且只能打开一个已经存在的文件打开一个已经存在的文件。2)“w”模式:模式:只能用于只能用于输出
15、(写操作)输出(写操作)。如果指定的如果指定的文件不存在文件不存在,则,则新建新建一个文件;一个文件;如果如果文件存在文件存在,则,则把原来的文件删除把原来的文件删除,再,再重新建立一个空白的文件重新建立一个空白的文件。3)“a”模式:模式:用于用于追加追加操作。操作。如果指定的如果指定的文件不存在文件不存在,则,则新建新建该文件;该文件;如果如果文件存在文件存在,保留该文件原有的数据保留该文件原有的数据,在原文件的末尾添加新的数据在原文件的末尾添加新的数据。4)打开方式带上)打开方式带上“b”表示是对表示是对二进制文件二进制文件进行操作。带上进行操作。带上“+”表示既可以读,又可以写。而对待
16、文件存在与否的不同处表示既可以读,又可以写。而对待文件存在与否的不同处理则按照理则按照“r”、“w”、“a”各自的规定。各自的规定。5)如果在打开文件时发生错误,即)如果在打开文件时发生错误,即打开失败打开失败,fopen返回一返回一个个空指针空指针NULL。第9章 文件操作 12文件打开可能出现的错误有:文件打开可能出现的错误有:试图以试图以“读读”模式(带模式(带“r”的方式)打开一个的方式)打开一个并不存在的文件并不存在的文件;试试图图以以“写写”方方式式(带带“w”或或“a”的的方方式式、“r+”或或“rb+”方方式式)打开被设置为打开被设置为“只读只读”属性的文件。属性的文件。新建一
17、个文件,而磁盘上没有足够的剩余空间或磁盘被写保护。新建一个文件,而磁盘上没有足够的剩余空间或磁盘被写保护。用不正确的模式打开一个文件可能会破坏文件的内容。用不正确的模式打开一个文件可能会破坏文件的内容。为避免因上述原因的出错,常用以下的方法来打开一个文件:为避免因上述原因的出错,常用以下的方法来打开一个文件:9.2.1文件的打开文件的打开-模式说明模式说明if(fp=fopen(source.txt,r)=NULL)printf(Thisfilecouldnotbeopened!n);exit(0)/*返回操作系统返回操作系统*/else /*此处编写对文件读此处编写对文件读/写的代码写的代码
18、*/#include 第9章 文件操作 139.2文件的打开与关闭文件的打开与关闭9.2.2文件的关闭文件的关闭【例例】fclose(fp)关闭由指针关闭由指针fp指定的文件,同时根据需要刷新缓冲区。指定的文件,同时根据需要刷新缓冲区。如果文件成功关闭,如果文件成功关闭,fclose函数将返回值函数将返回值0,否则返回,否则返回EOF。fclose(文件指针变量文件指针变量);对文件的操作完成后,应对文件的操作完成后,应确保关闭确保关闭程序中打开的文件,以程序中打开的文件,以避避免文件的数据丢失免文件的数据丢失。关闭文件指关闭文件指断开断开指针与文件之间的联系,也就指针与文件之间的联系,也就禁
19、止禁止再对该再对该文件进行操作。文件进行操作。磁盘已满、磁盘被移走或者出现磁盘已满、磁盘被移走或者出现I/O错误错误等都会导致等都会导致fclose函函数执行失败。数执行失败。第9章 文件操作 149.2文件的打开与关闭文件的打开与关闭不关闭文件可能会不关闭文件可能会丢失数据丢失数据磁盘文件磁盘文件输出文件缓冲区输出文件缓冲区输入文件缓冲区输入文件缓冲区程序数据区程序数据区a缓冲文件系统:缓冲文件系统:fclose 第9章 文件操作 159.3文件的读写文件的读写使用使用fopen成功打开文件后,都会有属于该文件的一个成功打开文件后,都会有属于该文件的一个文件读写位置指针文件读写位置指针,表示
20、文件内部即将要读写的位置。,表示文件内部即将要读写的位置。文件指针和文件内部的读写位置指针是不同的文件指针和文件内部的读写位置指针是不同的9.3.1文件读写函数概述文件读写函数概述字符读写函数:字符读写函数:fgetc()和和fputc()字符串读写函数:字符串读写函数:fgets()和和fputs()数据块读写函数:数据块读写函数:freed()和和fwrite()格式化读写函数:格式化读写函数:fscanf()和和fprinf()文本文件文本文件二进制文件二进制文件 第9章 文件操作 169.3文件的读写文件的读写文件指针和文件内部的读写位置指针是不同的文件指针和文件内部的读写位置指针是不
21、同的文件指针文件指针指向整个文件指向整个文件,在程序中定义,只要不重新赋值,在程序中定义,只要不重新赋值,文件指针的值不变。文件指针的值不变。文件内部的读写位置指针用于指示文件内部的文件内部的读写位置指针用于指示文件内部的当前读写位当前读写位置置,每读写一次,该指针均,每读写一次,该指针均自动向后移动自动向后移动,指向下一个读写,指向下一个读写单元。它不需在程序中定义,由单元。它不需在程序中定义,由系统自动设置系统自动设置。以以“r”或或“w”方方式式打打开开文文件件后后,该该文文件件读读写写位位置置指指针针初初始值指向文件开头始值指向文件开头;以以“a”方方式式打打开开文文件件后后,该该文文
22、件件读读写写位位置置指指针针初初始始值值指指向文件末尾向文件末尾。第9章 文件操作 179.3文件的读写文件的读写对对文文件件进进行行读读写写操操作作时时,需需要要判判断断当当前前读读写写位位置置,如如果果文件读操作到最后,再进行读写操作就会出错。文件读操作到最后,再进行读写操作就会出错。为了避免出错,为了避免出错,C提供了下面的方式提供了下面的方式判断文件是否读完判断文件是否读完1、对对于于文文本本文文件件,结结束束标标记记是是EOF(即即-1,在在stdio.h中中定定义义),可可以以通通过过读读取取的的字字符符是是不不是是结结束束标标记记来来判判断断文文本本文文件件是是否否读读完;完;2
23、、对对于于二二进进制制文文件件,没没有有EOF的的结结束束标标志志,只只能能使使用用系系统统提提供的供的feof函数函数来判断;来判断;其其中中,fp是是文文件件指指针针变变量量,如如果果文文件件读读取取结结束束则则返返回回非非0值值,没结束返回没结束返回0值。值。3、文本文件可使用、文本文件可使用feof函数按上面形式来判断是否读取结束。函数按上面形式来判断是否读取结束。while(!feof(fp)/*此处写入读操作语句此处写入读操作语句*/使用格式是:使用格式是:feof(fp)第9章 文件操作 189.3文件的读写文件的读写9.3.2字符读写函数字符读写函数(1)字符读函数)字符读函数
24、fgetc()功能:功能:从指定的文件中从指定的文件中读一个字符;读一个字符;函数调用的一般形式:函数调用的一般形式:字符变量字符变量=fgetc(文件指针变量文件指针变量);【例例】ch=fgetc(fp1);/*从从fp1指向的文件中读取一个字符并送入变量指向的文件中读取一个字符并送入变量ch中中*/说明:说明:在在fgetc函数调用中,读取的文件必须是以函数调用中,读取的文件必须是以读或读写方式读或读写方式打开的打开的读取成功返回文件当前位置的一个字符;读取成功返回文件当前位置的一个字符;读错误时返回读错误时返回EOF。第9章 文件操作 199.3文件的读写文件的读写9.3.2字符读写函
25、数字符读写函数(2)字符写函数)字符写函数fputc()功能:功能:将将一个字符写入一个字符写入到指定文件中;到指定文件中;函数调用的一般形式:函数调用的一般形式:fputc(字符变量,文件指针变量字符变量,文件指针变量);【例例】fputc(ch,fp2);/*将字符变量将字符变量ch中的字符写入到中的字符写入到fp2所指的文件中所指的文件中*/说明:说明:fputc函数也有返回值函数也有返回值若写操作成功,则返回向文件所写的字符;若写操作成功,则返回向文件所写的字符;否则返回否则返回EOF,表示写操作失败。,表示写操作失败。第9章 文件操作 20例例9-1用依次读取字符的方式,将用依次读取
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品ppt课件 文件 操作系统 管理 数据 基本单位 存储 在外 存储器 精品 ppt 课件
限制150内