资源预览内容
第1页 / 共32页
第2页 / 共32页
第3页 / 共32页
第4页 / 共32页
第5页 / 共32页
第6页 / 共32页
第7页 / 共32页
第8页 / 共32页
第9页 / 共32页
第10页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第十章,文件,10.1 文件概述 10.2 文件的打开与关闭 10.3 文件的读/写 10.4 文件的定位 10.5 文件检测函数 10.6 文件应用举例,第十章 文件,1. 文件的概念,文件有不同的类型,在程序设计中,主要用到两种文件: 程序文件。 包括源程序文件(后缀为.c)、目标文件(后缀为.obj)、可执行文件(后缀为.exe)等。这种文件的内容是程序代码。,10.1 文件概述,第十章 文件,1. 文件的概念,(2) 数据文件。 文件的内容不是程序,而是供程序运行时读写的数据,如在程序运行过程中输出到磁盘(或其他外部设备)的数据,或在程序运行过程中供读入的数据。如一批学生的成绩数据,或货物交易的数据等。 本章主要讨论的是数据文件,10.1 文件概述,第十章 文件,1. 文件的概念,在以前各章中所处理的数据的输入和输出,从终端的键盘输入数据,运行结果输出到终端显示器上 常常需要将一些数据输出到磁盘上保存起来,以后使用 这就要用到磁盘文件,10.1 文件概述,第十章 文件,1. 文件的概念,操作系统把各种设备都统一作为文件处理 从操作系统的角度看,每一个与主机相联的输入输出设备都看作是文件。 例如, 终端键盘是输入文件 显示屏和打印机是输出文件,10.1 文件概述,第十章 文件,1. 文件的概念,“文件”指存储在外部介质上数据的集合 一批数据是以文件的形式存放在外部介质上的 操作系统是以文件为单位对数据进行管理 想找存放在外部介质上的数据,先按文件名找到所指定的文件,然后再从该文件读数据 要向外部介质上存储数据也必须先建立一个文件(以文件名作为标志),才能向它输出数据,10.1 文件概述,第十章 文件,1. 文件的概念,输入输出是数据传送的过程,数据如流水一样从一处流向另一处,因此常将输入输出形象地称为流(stream),即数据流。流表示了信息从源到目的端的流动。,10.1 文件概述,第十章 文件,1. 文件的概念,10.1 文件概述,第十章 文件,输入操作时,数据从文件流向计算机内存 输出操作时,数据从计算机流向文件 无论是用Word打开或保存文件,还是C程序中的输入输出都是通过操作系统进行的 “流”是一个传输通道,数据可以从运行环境流入程序中,或从程序流至运行环境,1. 文件的概念,从C程序的观点来看,无论程序一次读写一个字符,或一行文字,或一个指定的数据区,作为输入输出的各种文件或设备都是统一以逻辑数据流的方式出现的。语言把文件看作是一个字符(或字节)的序列。一个输入输出流就是一个字符流或字节(内容为二进制数据)流。,10.1 文件概述,第十章 文件,1. 文件的概念,的数据文件由一连串的字符(或字节)组成,而不考虑行的界限,两行数据间不会自动加分隔符,对文件的存取是以字符(字节)为单位的。输入输出数据流的开始和结束仅受程序控制而不受物理符号(如回车换行符)控制,这就增加了处理的灵活性。这种文件称为流式文件。,10.1 文件概述,第十章 文件,1. 文件的概念,文件要有一个唯一的文件标识,以便用户识别和引用。 文件标识包括三部分: (1)文件路径 (2)文件名主干 (3)文件后缀,10.1 文件概述,第十章 文件,2. 文件的类型,无论是数据文件还是程序文件,都可以按如下分类方法分类: 1)按文件中数据存放的格式,可以把文件分为“二进制文件”和“文本文件”。 2)按文件的读写方式,可以把文件分为“顺序文件”和“随机文件”。,10.1 文件概述,第十章 文件,3. 文件类型指针,缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针” 每个被使用的文件都在内存中开辟一个相应的文件信息区,用来存放文件的有关信息(如文件的名字、文件状态及文件当前位置等) 这些信息是保存在一个结构体变量中的。该结构体类型是由系统声明的,取名为FILE,10.1 文件概述,第十章 文件,3. 文件类型指针,声明FILE结构体类型的信息包含在头文件“stdio.h”中 一般设置一个指向FILE类型变量的指针变量,然后通过它来引用这些FILE类型变量,10.1 文件概述,第十章 文件,10.1 文件概述 10.2 文件的打开与关闭 10.3 文件的读/写 10.4 文件的定位 10.5 文件检测函数 10.6 文件应用举例,第十章 文件,1. 文件的打开,fopen函数是用来打开一个文件的库函数,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式); 其中, “文件指针名”必须是被声明为FILE 类型的指针变量; “文件名”是被打开文件的文件名; “使用文件方式”是指文件的类型和操作要求。 “文件名”是字符串常量或字符串数组。,10.2 文件的打开与关闭,第十章 文件,2. 文件的关闭,文件一旦使用完毕,应用关闭文件函数把文件关闭,以避免文件的数据丢失等错误。 fclose函数调用的一般形式是: fclose(文件指针); 例如: fclose(fp);,第十章 文件,10.2 文件的打开与关闭,10.1 文件概述 10.2 文件的打开与关闭 10.3 文件的读/写 10.4 文件的定位 10.5 文件检测函数 10.6 文件应用举例,第十章 文件,1. 文本文件的读/写,1)读字符函数fgetc fgetc函数的功能是从指定的文件中读一个字符,函数调用的形式为: 字符变量=fgetc(文件指针); 2)写字符函数fputc fputc函数的功能是把一个字符写入指定的文件中,函数调用的形式为: fputc(字符量,文件指针);,10.3 文件的读/写,第十章 文件,1. 文本文件的读/写,3)读字符串函数fgets 函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为: fgets(字符数组名,n,文件指针); 4)写字符串函数fputs fputs函数的功能是向指定的文件写入一个字符串,其调用形式为: fputs(字符串,文件指针);,10.3 文件的读/写,第十章 文件,读数据块函数调用的一般形式为: fread(buffer,size,count,fp) ; 写数据块函数调用的一般形式为: fwrite(buffer,size,count,fp);,第十章 文件,2. 二进制文件的读/写,10.3 文件的读/写,fscanf函数,fprintf函数与前面使用的scanf和printf 函数的功能相似,都是格式化读写函数。两者的区别在于fscanf函数和fprintf函数的读写对象不是键盘和显示器,而是磁盘文件。 这两个函数的调用格式为: fscanf(文件指针,格式字符串,输入表列); fprintf(文件指针,格式字符串,输出表列);,第十章 文件,3. 格式化读函数fscanf和写函数fprintf,10.3 文件的读/写,10.1 文件概述 10.2 文件的打开与关闭 10.3 文件的读/写 10.4 文件的定位 10.5 文件检测函数 10.6 文件应用举例,第十章 文件,实现随机读写的关键是要按要求移动位置指针,这称为文件的定位。 移动文件内部位置指针的函数主要有两个,即 rewind 函数和fseek函数。 rewind函数前面已多次使用过,其调用形式为: rewind(文件指针); 它的功能是把文件内部的位置指针移到文件首。 下面主要介绍fseek函数。 fseek函数用来移动文件内部位置指针,其调用形式为: fseek(文件指针,位移量,起始点);,10.4 文件的定位,第十章 文件,10.1 文件概述 10.2 文件的打开与关闭 10.3 文件的读/写 10.4 文件的定位 10.5 文件检测函数 10.6 文件应用举例,第十章 文件,语言中常用的文件检测函数有以下几个。 (1)文件结束检测函数feof函数 调用格式: feof(文件指针); 功能:判断文件内部的位置指针是否处于文件结束位置,如文件结束,则返回值为1,否则为0。 (2)读写文件出错检测函数 调用格式: ferror(文件指针); 功能:检查文件在用各种输入输出函数进行读写时是否出错。如ferror返回值为0表示未出错,否则表示有错。,10.5 文件检测函数,第十章 文件,语言中常用的文件检测函数有以下几个。 (3)文件出错标志和文件结束标志置0函数 调用格式: clearerr(文件指针); 功能:本函数用于清除出错标志和文件结束标志,使它们为0值。,10.5 文件检测函数,第十章 文件,10.1 文件概述 10.2 文件的打开与关闭 10.3 文件的读/写 10.4 文件的定位 10.5 文件检测函数 10.6 文件应用举例,第十章 文件,【例10-1】 读入文件c1.doc,在屏幕上输出。 #include main() FILE *fp; char ch; if(fp=fopen(“d:jrzhexamplec1.txt“,“rt“)=NULL) printf(“nCannot open file strike any key exit!“); getch(); exit(1); ch=fgetc(fp);,10.6 文件应用举例,第十章 文件,【例10-1】 读入文件c1.doc,在屏幕上输出。 while(ch!=EOF) putchar(ch); ch=fgetc(fp); fclose(fp); ,10.6 文件应用举例,第十章 文件,Thank You !,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号