C程序设计第10章.pptx
《C程序设计第10章.pptx》由会员分享,可在线阅读,更多相关《C程序设计第10章.pptx(50页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、文件分类文件是程序设计中的一个重要概念,从不同的角度看文件可以分成不同的从操作角度看顺序文件随机文件从用户角度看普通文件设备文件从文件内部编码方式看ASCII文件二进制文件第1页/共50页文件名文件名是文件的唯一标识,它的一般结构是主文件名.扩展名其中的扩展名可以省略,但通常都保留。因为通过扩展名,可以判断文件类型。例如.c C语言的源程序文件.txt 文本文件.doc word文档文件第2页/共50页文件名分为绝对文件名从磁盘盘符开始描述的文件名相对文件名从计算机操作系统中文件系统的某个节点开始描述的文件名 例如:E:docprogramingtest.c 表示绝对文件名 test.c 表示
2、相对于节 E:docprograming的相对文件名第3页/共50页顺序文件和随机文件顺序文件的特点:文件分成两种模式读模式 写模式在任意时刻,一个顺序文件只能处于两种模式之一。当一个顺序文件处于读模式时,只能从该文件读数据。反之,当一个顺序文件处于写模式时,只能向该文件写数据。从操作角度看,顺序文件只能顺序操作。对于读来讲,顺序文件只能从文件第一成分开始顺序的,一个成分接一个成分的读数据。对于写来讲,顺序文件只能在文件尾一个成分接一个成分的向文件里写数据,每次写进的成分都放在文件末尾第4页/共50页随机文件的特点是:对文件的操作是随机在同一时刻,即可以向文件中写,也可以从文件中读(文件没有读
3、写模式之分)。读写操作可以针对文件中任意成分进行。例如第一次读了第100个成分然后再读第3个成分然后再用一个新的数据修改第50 成分将其写入第50个成分中然后又读第200个成分.,等等。这是允许的,并且是正确的。第5页/共50页普通文件和设备文件普通文件是指驻留在磁盘或其它外部介质上的一个有序数据集,可以是源程序文件、目标程序文件、可执行程序文件;也可以是一组待输入处理的原始数据,或者是一组输出的结果。设备文件是指与主机相联的各种外部设备,如显示器、打印机、键盘等。在操作系统中,把外部设备也作为文件来进行管理,把它们的输入、输出等同于对磁盘文件的读和写。通常显示器定义为标准输出文件,键盘是标准
4、输入文件 第6页/共50页ASCII文件和二进制文件ASCII文件就是ASCII码文件,也称为文本文件、TEXT文件。这种文件每个字符对应一个字节,用于存放相应字符的ASCII码,也就是存放字符的存储形态的编码。字符1、2、3、4的ASCII码分别为49、50、51、52(十六进制的31、32、33、34),字符串“1234”的存储形式为:共占用4个字节。ASCII文件可以在屏幕上按字符显示,例如源程序文件就是ASCII文件,用DOS命令TYPE可以显示文件的内容。由于是按字符显示,因此能读懂文件内容。第7页/共50页二进制文件就是二进制码文件,它把数据按二进制编码方式存放到文件中。例如,数1
5、234的存储形式为:0000010011010010只占二个字节。用TYPE命令显示二进制文件是无意义的,其内容无法读懂。第8页/共50页流式文件C系统的文件操作,不区分文件类别。不论 顺序文件还是随机文件、普通文件还是设备文件、ASCII文件还是二进制文件。C把文件一律都看成是“字节流”,以字节(每个字节可能是一个字符,也可能是一个二进制代码)为单位进行操作处理。对字节流的操作;输入输出的开始和结束都由程序控制,不受物理符号(如回车符)的影响。把这种文件操作方式称作“流式文件流式文件”。第9页/共50页文件指针C 系统为了处理文件,为每个文件在内存中开辟一个区域,用来存放文件的有关信息,如文
6、件名、文件状态以及文件当前位置等。这个区域被作成一个称为 FILE 类型的结构体。FILE 的类型由系统定义,保存在头文件 stdio.h 中,它的具体结构我们暂时不用关心。C 程序中用指向 FILE 类型变量的指针变量(简称“文件指针”)来标识具体文件。变量声明 FILE *fp;声明了一个文件指针变量 fp,以后 fp 可以用来标识具体文件。第10页/共50页标记C文件是一个流式文件,在该字节流上有一个隐含的暗标记,该标记总是指向文件中正要操作的字节,即下一个字节,称该标记为文件读写位置指针称该标记为文件读写位置指针。例如:指向文件首,即指向第一个字节 指向第四个字节;.指向文件尾;第11
7、页/共50页几个常量 C系统引进几个常量标志文件处理状态。最常用的是 EOF 和 NULL,它们是 stdio.h 中预定义的常量。EOF:值为“-1”习惯上表示文件结束,或文件操作出错;NULL:值为“0”习惯上表示打开文件失败等。第12页/共50页文件操作C没有文件操作语句,C文件操作全部通过系统定义的库函数来实现。“库函数”是指系统已经定义好的,存放在“函数库”文件内的,可以被用户直接调用的函数。这些库函数根据其功能的不同,存放在不同的函数库中。库函数本身并不属于语言,它是系统根据需要提供给用户使用的函数。C 标准定义了常用的函数库和每个函数库中常用的库函数。但是不同的编译系统提供的函数
8、库不同,不同编译系统在每个函数库中提供的库函数也不同。为了提高程序的可移植性,用户应该只使用 C 标准定义的函数库和库函数。第13页/共50页对应每个函数库,有一个头文件,在头文件中包含相应函数库中所有函数的函数原型。用户使用库函数时,需要把相应的头文件用#include 命令括入到自己的程序文件中。文件操作函数库的头文件是“stdio.h”,在用户程序中只要涉及文件操作,即只要涉及输入输出就应该把该文件括入程序中,使用的程序行是:#include stdio.h这就是为什么前述各个章节的程序都含有这一行的原因。第14页/共50页任何高级语言,对文件操作都应该遵循:任何高级语言,对文件操作都应
9、该遵循:打开文件打开文件 操作文件操作文件 关闭文件关闭文件这样的过程。这样的过程。下面就遵循这个规则对文件的操作进行说明下面就遵循这个规则对文件的操作进行说明 第15页/共50页打开文件函数原型 FILE*fopen(const char*filename,const char*mode);调用方式 fp=fopen(filename,mode);filename 是一个字符串,具体给出要打开的文件的文件名;mode 也是一个字符串,具体给出文件的打开模式,表12-1列出各种打开模式;fp 是文件指针变量,以后程序中使用该指针变量标识由文件名给出的文件。第16页/共50页fopen 根据 m
10、ode 指定的模式,打开由filename指定的文件。例如:fp=fopen(c:userfile.txt,r);以“只读”方式,打开 c 盘 user 节点下的 file.txt 文件。如果成功则 fp 就是文件 file.txt 的文件指针变量,并且只允许对文件进行读操作;否则 fp 的值是 NULL。第17页/共50页下表给出文件打开模式下表给出文件打开模式 mode mode 及其含义。及其含义。序号序号mode含义含义1 1“r r”以只读方式打开一个以只读方式打开一个ASCIIASCII文件文件2 2“w w”以只写方式打开或新建一个以只写方式打开或新建一个ASCIIASCII文件
11、,原文件,原有文件内容全部删除有文件内容全部删除3 3“a a”同同“w w”,但是不删除原有文件内容,但是不删除原有文件内容4 4“r+r+”以可读可写方式打开一个以可读可写方式打开一个ASCIIASCII文件文件5 5“w+w+”以可读可写方式打开或新建一个以可读可写方式打开或新建一个ASCIIASCII文件,文件,原有文件内容全部删除原有文件内容全部删除6 6“a+a+”同同“w+w+”,但是不删除原有文件内容,但是不删除原有文件内容第18页/共50页7“rb”以只读方式打开一个二进制文件以只读方式打开一个二进制文件8“wb”以只写方式打开或新建一个二进制文件,原以只写方式打开或新建一个
12、二进制文件,原有文件内容全部删除有文件内容全部删除9“ab”同同“wb”,但是不删除原有文件内容,但是不删除原有文件内容10“rb+”以可读可写方式打开一个二进制文件以可读可写方式打开一个二进制文件11“wb+”以可读可写方式打开或新建一个二进制文件,以可读可写方式打开或新建一个二进制文件,原有文件内容全部删除原有文件内容全部删除12“ab+”同同“wb+”,但是不删除原有文件内容,但是不删除原有文件内容第19页/共50页关闭文件函数原型int fclose(FILE*stream );调用方式fclose(fp);第20页/共50页读字符函数原型:int fgetc(FILE*fp);功能从
13、fp指向的文件中读取一个字符,同时将读写位置指针向前移动1个字节第21页/共50页写字符函数原型int fputc(int ch,FILE *fp);功能把字符ch写入fp指向的文件,同时将读写位置指针向前移动1个字节。第22页/共50页读字符串函数原型:char *fgets(char *str,int num,FILE *fpointer);功能:从fpointer指向的文件中读取一个字符串,并将此串保存在str指向的字符数组中。字符串的自然结束符是“换行符”和“文件结束符”。若读到 num-1 个字符后还没遇到结束符,则也强制结束,这时把 num-1 个读入的字符送入数组 str 中。读
14、入结束后,在数组 str的字符串末尾加字符串终止字符 NULL;并将文件读写位置指针向前移动实际读取的字节个数第23页/共50页写字符串函数原型int *fputs(char *str,FILE *fpointer);功能:把str所指字符串(不包括字符串结束符NULL)写入fpointer指向的文件,同时将读写位置指针向前移动num(字符串长度)个字节。第24页/共50页读数据块函数原型:int fread(void *buf,int size,int count,FILE *fp);功能:从fp所指的文件中读取count个字段,每个字段为size个字节,把它们送到buf所指的缓冲数组中,同
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 10
限制150内