




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、10.1 文件的有关概念文件的有关概念10.2 文件的打开与关闭文件的打开与关闭10.3 文件的顺序读写文件的顺序读写10.4 文件的随机读写文件的随机读写10.5 提高部分提高部分P27510.1 文件的有关概念文件的有关概念10.1.1 什么是文件10.1.2 文件名10.1.3 文件的分类10.1.4 文件缓冲区10.1.5 文件指针P27510.1.1 什么是文件什么是文件P275文件有不同的类型,在程序设计中,主要文件有不同的类型,在程序设计中,主要用到两种文件:用到两种文件:(1) 程序文件。包括源程序文件程序文件。包括源程序文件(后缀为后缀为.c)、目标文件、目标文件(后缀为后缀
2、为.obj)、可执行文、可执行文件件(后缀为后缀为.exe)等。这种文件的内容是程等。这种文件的内容是程序代码。序代码。10.1.1 什么是文件什么是文件P275文件有不同的类型,在程序设计中,主要文件有不同的类型,在程序设计中,主要用到两种文件:用到两种文件:(2) 数据文件。文件的内容不是程序,而数据文件。文件的内容不是程序,而是供程序运行时读写的数据,如在程序运是供程序运行时读写的数据,如在程序运行过程中输出到磁盘行过程中输出到磁盘(或其他外部设备或其他外部设备)的的数据,或在程序运行过程中供读入的数据数据,或在程序运行过程中供读入的数据。如一批学生的成绩数据,或货物交易的。如一批学生的
3、成绩数据,或货物交易的数据等。数据等。本章主要讨论的是数据文件本章主要讨论的是数据文件10.1.1 什么是文件什么是文件P275在以前各章中所处理的数据的输入和输出在以前各章中所处理的数据的输入和输出,从终端的键盘输入数据,运行结果输出,从终端的键盘输入数据,运行结果输出到终端显示器上到终端显示器上常常需要将一些数据输出到磁盘上保存起常常需要将一些数据输出到磁盘上保存起来,以后使用来,以后使用这就要用到磁盘文件这就要用到磁盘文件10.1.1 什么是文件什么是文件P275操作系统把各种设备都统一作为文件处理操作系统把各种设备都统一作为文件处理从操作系统的角度看,每一个与主机相联从操作系统的角度看
4、,每一个与主机相联的输入输出设备都看作是文件。例如,的输入输出设备都看作是文件。例如,终端键盘是输入文件终端键盘是输入文件显示屏和打印机是输出文件显示屏和打印机是输出文件10.1.1 什么是文件什么是文件P275“文件指存储在外部介质上数据的集合文件指存储在外部介质上数据的集合一批数据是以文件的形式存放在外部介质一批数据是以文件的形式存放在外部介质上的上的操作系统是以文件为单位对数据进行管理操作系统是以文件为单位对数据进行管理想找存放在外部介质上的数据,先按文件想找存放在外部介质上的数据,先按文件名找到所指定的文件,然后再从该文件读名找到所指定的文件,然后再从该文件读数据数据要向外部介质上存储
5、数据也必须先建立一要向外部介质上存储数据也必须先建立一个文件以文件名作为标志),才能向它个文件以文件名作为标志),才能向它输出数据输出数据10.1.1 什么是文件什么是文件P275输入输出是数据传送的过程,数据如流水输入输出是数据传送的过程,数据如流水一样从一处流向另一处,因此常将输入输一样从一处流向另一处,因此常将输入输出形象地称为流出形象地称为流(stream),即数据流。,即数据流。流表示了信息从源到目的端的流动。流表示了信息从源到目的端的流动。输入操作时,数据从文件流向计算机内存输入操作时,数据从文件流向计算机内存输出操作时,数据从计算机流向文件输出操作时,数据从计算机流向文件10.1
6、.1 什么是文件什么是文件P275语言把文件看作是一个字符或字节语言把文件看作是一个字符或字节的序列。一个输入输出流就是一个字符流的序列。一个输入输出流就是一个字符流或字节或字节(内容为二进制数据内容为二进制数据)流。流。10.1.1 什么是文件什么是文件P275的数据文件由一连串的字符或字节的数据文件由一连串的字符或字节组成,中间没有分隔符,对文件的存取是组成,中间没有分隔符,对文件的存取是以字符字节为单位的,允许对文件存以字符字节为单位的,允许对文件存取一个字符。输入输出数据流的开始和结取一个字符。输入输出数据流的开始和结束仅受程序控制而不受物理符号如回车束仅受程序控制而不受物理符号如回车
7、换行符控制,这就增加了处理的灵活性换行符控制,这就增加了处理的灵活性。这种文件称为。这种文件称为“流式文件流式文件”。10.1.2 文件名文件名P276文件要有一个唯一的文件标识,以便用户文件要有一个唯一的文件标识,以便用户识别和引用。识别和引用。文件标识包括文件标识包括3部分:部分:(1)文件路径文件路径(2)文件名主干文件名主干(3)文件后缀文件后缀10.1.2 文件名文件名P276文件路径表示文件在外部存储设备中的位文件路径表示文件在外部存储设备中的位置。如:置。如: d: cctempfile1.dat表示表示file1.dat文件存放在文件存放在d盘中的盘中的cc目录目录下的下的te
8、mp子目录下面子目录下面文件路径文件路径文件名主干文件名主干文件后缀文件后缀10.1.2 文件名文件名P276文件路径表示文件在外部存储设备中的位文件路径表示文件在外部存储设备中的位置。如:置。如: d: cctempfile1.dat表示表示file1.dat文件存放在文件存放在d盘中的盘中的cc目录目录下的下的temp子目录下面子目录下面文件名文件名10.1.2 文件名文件名P276文件路径表示文件在外部存储设备中的位文件路径表示文件在外部存储设备中的位置。如:置。如: d: cctempfile1.dat表示表示file1.dat文件存放在文件存放在d盘中的盘中的cc目录目录下的下的te
9、mp子目录下面子目录下面命名规则遵循标命名规则遵循标识符的命名规则识符的命名规则10.1.2 文件名文件名P276文件路径表示文件在外部存储设备中的位文件路径表示文件在外部存储设备中的位置。如:置。如: d: cctempfile1.dat表示表示file1.dat文件存放在文件存放在d盘中的盘中的cc目录目录下的下的temp子目录下面子目录下面一般不超过一般不超过3个字母个字母doc、txt、dat、c、cpp、obj、exe、ppt、bmp等)等)10.1.3 文件的分类文件的分类P276根据数据的组织形式,数据文件可分为根据数据的组织形式,数据文件可分为ASCII文件和二进制文件。文件和
10、二进制文件。数据在内存中是以二进制形式存储的,如数据在内存中是以二进制形式存储的,如果不加转换地输出到外存,就是二进制文果不加转换地输出到外存,就是二进制文件件如果要求在外存上以如果要求在外存上以ASCII代码形式存储代码形式存储,则需要在存储前进行转换,则需要在存储前进行转换ASCII文件又称文本文件,每一个字节放文件又称文本文件,每一个字节放一个字符的一个字符的ASCII代码代码10.1.3 文件的分类文件的分类P2760011000100110000001100000011000000110000(1)(0)(0)(0)(0)ASCII形式形式0000000000000000001001
11、1100010000二进制形式二进制形式(10000)10.1.4 文件缓冲区文件缓冲区P277ANSI C标准采用标准采用“缓冲文件系统处理数缓冲文件系统处理数据文件据文件所谓缓冲文件系统是指系统自动地在内存所谓缓冲文件系统是指系统自动地在内存区为程序中每一个正在使用的文件开辟一区为程序中每一个正在使用的文件开辟一个文件缓冲区个文件缓冲区10.1.4 文件缓冲区文件缓冲区P277从内存向磁盘输出数据必须先送到内存中从内存向磁盘输出数据必须先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘的缓冲区,装满缓冲区后才一起送到磁盘去去如果从磁盘向计算机读入数据,则一次从如果从磁盘向计算机读入数据,则一
12、次从磁盘文件将一批数据输入到内存缓冲区磁盘文件将一批数据输入到内存缓冲区充满缓冲区),然后再从缓冲区逐个地将充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区给程序变量)数据送到程序数据区给程序变量)10.1.4 文件缓冲区文件缓冲区P277程序数据区程序数据区输出文件缓冲区输出文件缓冲区输入文件缓冲区输入文件缓冲区磁盘磁盘从内存向磁盘输出数据从内存向磁盘输出数据装满缓冲区装满缓冲区10.1.4 文件缓冲区文件缓冲区P277程序数据区程序数据区输出文件缓冲区输出文件缓冲区输入文件缓冲区输入文件缓冲区磁盘磁盘从磁盘向计算机读入数据从磁盘向计算机读入数据充满缓冲区充满缓冲区10.1.5 文件指
13、针文件指针P277缓冲文件系统中,关键的概念是缓冲文件系统中,关键的概念是“文件类文件类型指针型指针”,简称,简称“文件指针文件指针”每个被使用的文件都在内存中开辟一个相每个被使用的文件都在内存中开辟一个相应的文件信息区,用来存放文件的有关信应的文件信息区,用来存放文件的有关信息如文件的名字、文件状态及文件当前息如文件的名字、文件状态及文件当前位置等)位置等)这些信息是保存在一个结构体变量中的。这些信息是保存在一个结构体变量中的。该结构体类型是由系统声明的,取名为该结构体类型是由系统声明的,取名为FILE10.1.5 文件指针文件指针P277声明声明FILE结构体类型的信息包含在头文件结构体类
14、型的信息包含在头文件“stdio.h中中一般设置一个指向一般设置一个指向FILE类型变量的指针变类型变量的指针变量,然后通过它来引用这些量,然后通过它来引用这些FILE类型变量类型变量10.1.5 文件指针文件指针P277FILE*fp1,*fp2,*fp3;文件文件f1的的文件信息区文件信息区fp1文件文件f2的的文件信息区文件信息区fp2文件文件f3的的文件信息区文件信息区fp310.2 文件的打开与关闭文件的打开与关闭10.2.1 用fopen函数打开数据文件10.2.2 用fclose函数关闭文件P27810.2.1 用用fopen函数打开数据文件函数打开数据文件P278对文件读写之前
15、应该对文件读写之前应该“翻开该文件,在翻开该文件,在使用结束之后应使用结束之后应“封锁该文件。封锁该文件。所谓所谓“翻开是指为文件建立相应的信息翻开是指为文件建立相应的信息区区(用来存放有关文件的信息用来存放有关文件的信息)和文件缓冲和文件缓冲区区(用来暂时存放输入输出的数据用来暂时存放输入输出的数据)。10.2.1 用用fopen函数打开数据文件函数打开数据文件P278在编写程序时,在打开文件的同时,一般在编写程序时,在打开文件的同时,一般都指定一个指针变量指向该文件,也就是都指定一个指针变量指向该文件,也就是建立起指针变量与文件之间的联系,这样建立起指针变量与文件之间的联系,这样就可以通过
16、该指针变量对文件进行读写就可以通过该指针变量对文件进行读写所谓所谓“封锁是指撤销文件信息区和文件封锁是指撤销文件信息区和文件缓冲区缓冲区 10.2.1 用用fopen函数打开数据文件函数打开数据文件P278fopen函数的调用方式为:函数的调用方式为:fopen(文件名文件名,使用文件方式使用文件方式);例如:例如: fopen(“a1”,”r”); 表示要打开名为表示要打开名为“a1的文件,使用文件的文件,使用文件方式为方式为“读入读入”fopen函数的返回值是指向函数的返回值是指向a1文件的指文件的指针针10.2.1 用用fopen函数打开数据文件函数打开数据文件P278通常将通常将fop
17、en函数的返回值赋给一个指向函数的返回值赋给一个指向文件的指针变量。如:文件的指针变量。如:FILE *fp; fp=fopen(“a1”,”r”);fp和文件和文件a1相联系,相联系,fp指向了指向了a1文件文件10.2.1 用用fopen函数打开数据文件函数打开数据文件P278在打开一个文件时,通知编译系统以下在打开一个文件时,通知编译系统以下3个信息:个信息:需要访问的文件的名字需要访问的文件的名字使用文件的方式(使用文件的方式(“读还是读还是“写等写等)让哪一个指针变量指向被打开的文件让哪一个指针变量指向被打开的文件使用文件方式参见教材表使用文件方式参见教材表10.1。10.2.1 用
18、用fopen函数打开数据文件函数打开数据文件P278阐明:阐明:(1) 最基本的是最基本的是“r”,“w”,“a三种三种方式。在其后加方式。在其后加“b表示是二进制文件表示是二进制文件,“+”表示既可读又可写。表示既可读又可写。10.2.1 用用fopen函数打开数据文件函数打开数据文件P278阐明:阐明: (2) 如果不能实现如果不能实现“翻开的任务,翻开的任务,fopen函数将会带回一个出错信息。出错函数将会带回一个出错信息。出错的原因可能是用的原因可能是用“r方式打开一个并不方式打开一个并不存在的文件;磁盘出故障;磁盘已满无法存在的文件;磁盘出故障;磁盘已满无法建立新文件等。此时建立新文
19、件等。此时fopen函数将带回一函数将带回一个空指针值个空指针值NULL。10.2.1 用用fopen函数打开数据文件函数打开数据文件P278常用下面的方法打开一个文件:常用下面的方法打开一个文件: if (fp=fopen(“file1”,r)=NULL)printf(“cannot open this filen”); exit(0);终止正在执行的程序终止正在执行的程序10.2.2 用用fclose函数关闭文件函数关闭文件P280关闭文件用关闭文件用fclose函数。函数。fclose函数调函数调用的一般形式为用的一般形式为fclose(文件指针文件指针); 例如:例如: fclose
20、(fp); 如果不关闭文件将会丢失数据。如果不关闭文件将会丢失数据。10.3 文件的顺序读写文件的顺序读写P280在顺序写时,先写入的数据存放在文件中在顺序写时,先写入的数据存放在文件中前面,后写入的数据存放在文件中后面前面,后写入的数据存放在文件中后面在顺序读时,先读文件中前面的数据,后在顺序读时,先读文件中前面的数据,后读文件中后面的数据读文件中后面的数据对顺序读写来说,对文件读写数据的顺序对顺序读写来说,对文件读写数据的顺序和数据在文件中的物理顺序是一致的和数据在文件中的物理顺序是一致的 顺序读写需要用库函数实现顺序读写需要用库函数实现10.3.1 向文件读写一个字符向文件读写一个字符1
21、0.3.2 向文件读写一个字符串向文件读写一个字符串10.3.3 文件的格式化读写文件的格式化读写10.3.4 用二进制方式读写文件用二进制方式读写文件10.3 文件的顺序读写文件的顺序读写P28010.3.1 向文件读写一个字符向文件读写一个字符P280函数名函数名调用形式调用形式功能功能返回值返回值fgetcfgetc(fp)从从fp指向的指向的文件读入一文件读入一个字符个字符读成功,带回所读读成功,带回所读的字符,失败则返的字符,失败则返回文件结束标志回文件结束标志(即即-1)fputcfputc(ch,fp)把字符把字符ch写写到文件指针到文件指针变量变量fp所指所指向的文件中向的文件
22、中写成功,返回值就写成功,返回值就是输出的字符;输是输出的字符;输出失败,则返回出失败,则返回(即(即-1)读写一个字符的函数读写一个字符的函数10.3.2 向文件读写一个字符串向文件读写一个字符串P284读写一个字符串的函数读写一个字符串的函数函数名函数名调用形式调用形式功能功能返回值返回值fgetsfgets(str,n,fp)从从fp指向的文件读指向的文件读入长度为入长度为(n-1)的字的字符串,存放到字符符串,存放到字符数组数组str中中读成功,返读成功,返回地址回地址str,失败则返回失败则返回NULL)fputsfputs(str,fp)str所指向的字符串所指向的字符串写到文件指
23、针变量写到文件指针变量fp所指向的文件中所指向的文件中写成功,返写成功,返回回 0 ; 否 则; 否 则返回非返回非0值值阐明:阐明:(1用用fgets函数可以从指定的文件读入函数可以从指定的文件读入一个字符串。如:一个字符串。如: fgets(str,n,fp); 阐明:阐明:fgets(str,n,fp);中中n是要求得到的字符个是要求得到的字符个数,但实际上只读数,但实际上只读n-1个字符,然后在最后个字符,然后在最后加一个加一个0字符,这样得到的字符串共字符,这样得到的字符串共有有n个字符,把它们放到字符数组个字符,把它们放到字符数组str中中如果在读完如果在读完n-1个字符之前遇到换
24、行符个字符之前遇到换行符“n或文件结束符或文件结束符EOF,读入即结束,但将所,读入即结束,但将所遇到的换行符遇到的换行符“n也作为一个字符读入也作为一个字符读入执行执行fgets成功,返回成功,返回str数组首地址,如数组首地址,如果一开始就遇到文件尾或读数据错,返回果一开始就遇到文件尾或读数据错,返回NULL阐明:阐明:(2用用fputs函数可以向指定的文件输出函数可以向指定的文件输出一个字符串。如:一个字符串。如: fputs(Chian,fp);fputs函数中第一个参数可以是字符串常量函数中第一个参数可以是字符串常量、字符数组名或字符型指针、字符数组名或字符型指针字符串末尾的字符串末
25、尾的0不输出不输出输出成功,函数值为;失败,函数值为输出成功,函数值为;失败,函数值为EOF10.3.3 文件的格式化读写文件的格式化读写P287一般调用方式为:一般调用方式为:fprintf(文件指针文件指针,格式字符串格式字符串,输出表列输出表列);fscanf (文件指针文件指针,格式字符串格式字符串,输入表列输入表列);如:如:fprintf (fp,”%d,%6.2f”,i,f);fscanf (fp,”%d,%f”,&i,&f);10.3.4 用二进制方式读写文件用二进制方式读写文件P288一般调用形式为一般调用形式为:fread(buffer,size,count
26、,fp);fwrite(buffer,size,count,fp); 10.3.4 用二进制方式读写文件用二进制方式读写文件P288buffer:是一个地址:是一个地址对对fread来说,它是用来存放从文件读入的数来说,它是用来存放从文件读入的数据的存储区的地址据的存储区的地址对对fwrite来说,是要把此地址开始的存储区中来说,是要把此地址开始的存储区中的数据向文件输出的数据向文件输出size:要读写的字节数:要读写的字节数count:要读写多少个数据项:要读写多少个数据项fp:FILE类型指针类型指针10.4 文件的随机读写文件的随机读写P291对文件进行顺序读写比较容易理解,也容对文件进
27、行顺序读写比较容易理解,也容易操作,但有时效率不高易操作,但有时效率不高随机访问不是按数据在文件中的物理位置随机访问不是按数据在文件中的物理位置次序进行读写,而是可以对任何位置上的次序进行读写,而是可以对任何位置上的数据进行访问,显然这种方法比顺序访问数据进行访问,显然这种方法比顺序访问效率高得多效率高得多10.4 文件的随机读写文件的随机读写10.4.1 文件位置指针及其定位10.4.2 随机读写文件P29110.4.1 文件位置指针及其定位文件位置指针及其定位P2921.文件的位置指针文件的位置指针为了对读写进行控制,系统为每个文件设为了对读写进行控制,系统为每个文件设置了一个位置指针,用
28、来指示当前的读置了一个位置指针,用来指示当前的读写位置。写位置。10.4.1 文件位置指针及其定位文件位置指针及其定位P2921.文件的位置指针文件的位置指针文件指针文件指针读写当前位置读写当前位置文件尾文件尾文件头文件头10.4.1 文件位置指针及其定位文件位置指针及其定位P2921.文件的位置指针文件的位置指针一般情况下,在对字符文件进行顺序读写一般情况下,在对字符文件进行顺序读写时,文件标记指向文件开头,进行读的时,文件标记指向文件开头,进行读的操作时,就读第一个字符,然后文件标操作时,就读第一个字符,然后文件标记向后移一个位置,在下一次读操作时记向后移一个位置,在下一次读操作时,就将位
29、置标记指向的第二个字符读入,就将位置标记指向的第二个字符读入。依此类推,直到遇文件尾,终了。依此类推,直到遇文件尾,终了10.4.1 文件位置指针及其定位文件位置指针及其定位P2921.文件的位置指针文件的位置指针如果是顺序写文件,则每写完一个数据后如果是顺序写文件,则每写完一个数据后,文件标记顺序向后移一个位置,然后,文件标记顺序向后移一个位置,然后在下一次执行写操作时把数据写入指针在下一次执行写操作时把数据写入指针所指的位置。直到把全部数据写完,此所指的位置。直到把全部数据写完,此时文件位置标记在最后一个数据之后时文件位置标记在最后一个数据之后10.4.1 文件位置指针及其定位文件位置指针及其定位P2921.文件的位置指针文件的位置指针可以根据读写的需要,人为地移动了文件可以根据读写的需要,人为地移动了文件标记的位置。文件标记可以向前移、向标记的位置。文件标记可以向前移、向后移,移到文件头或文件尾,然后对该后移,移到
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国方头板式角度尺数据监测研究报告
- 借款合同范例文本
- 2025至2030年中国双向格栅风口数据监测研究报告
- 2025至2030年中国光纤夹数据监测研究报告
- 媒介融合视域下文艺院团媒体矩阵构建路径研究
- LncRNA PVT1通过TUBA1C促进胆管癌细胞增殖和迁移的机制研究
- 2025至2030年中国一线数字录音机数据监测研究报告
- 实现教育协同育人的策略及实施方案
- 热电双物理场中多功能变换热超构材料的设计与特性研究
- 部编版六年级上册语文第八单元《有你,真好》作文范文450字10篇
- 2023光伏板索支承结构技术规程
- JJF1033-2023计量标准考核规范
- 2024年全国“纪检监察”业务相关知识考试题库(附含答案)
- 抖音火花合同电子版获取教程
- 2024年苏州卫生职业技术学院单招职业倾向性测试题库附答案
- 文本排版习题
- 数据库及其应用-重点复习资料.代码02120
- 岩石坚固性和稳定性分级表
- 律师事务所函[]第号
- 物流经典游戏啤酒游戏(完全操作版)
- 新形势下如何做一名合格的乡镇干部之我见
评论
0/150
提交评论