欢迎来到天天文库
浏览记录
ID:50351354
大小:114.00 KB
页数:31页
时间:2020-03-08
《C语言程序设计 教学课件 作者 王煜 等 第12章 文件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第12章文件12.1C文件的概念12.2文件操作函数12.3应用举例12.1C文件的概念C文件的类型C语言把文件看作是一个字符的序列,即文件是由一个一个字符组成的字符流。因此C语言将文件也称之为流。即,当读写一个文件时,可以不必关心文件的格式或结构。文件是以字符序列形式表示的,但C语言支持两种类型的文件:文本文件和二进制文件。这两种文件的区别在于存放数据的方式不同。二进制文件格式:以补码形式存放。二进制文件是把数据以二进制数的格式存放在文件中的,其占用存储空间较少。ASCII码格式:一个字节存放一个字符。文本文件的每一个字节存放一个
2、ASCII码,代表一个字符。这便于对字符的逐个处理,但占用存储空间较多,而且要花费转换时间。12.1C文件的概念C语言对文件的处理一般有两种方法:缓冲文件系统和非缓冲文件系统。缓冲文件系统:在缓冲文件系统中,系统在对文件进行读写之前首先在内存区开辟一个称作缓冲区的专用内存区域。从内存向磁盘写文件时必须先写入缓冲区,装满缓冲区后才一起写到磁盘上去;从磁盘读文件时必须先将一批数据读到缓冲区(充满缓冲区),然后再从缓冲区将数据逐个送到用户数据区。非缓冲文件系统:在非缓冲文件系统中,文件的处理不自动开辟确定大小的缓冲区,而是由程序设定缓冲区
3、。一般地,用缓冲文件系统进行的输入输出称为高级磁盘输入输出,用非缓冲文件系统进行的输入输出称为低级(低层)的输入输出。12.1C文件的概念文件类型指针文件类型文件类型实际上是一个结构体类型,类型名为FILE。TurboC将该类型存放在stdio.h文件中。具体声明如下:typedefstruct{shortlevel;/*缓冲区“满”或“空”的程度*/unsignedflags;/*文件状态标志*/charfd;/*文件描述符*/unsignedcharhold;/*如无缓冲区不读取字符*/shortbsize;/*缓冲区的大小*/
4、unsignedchar*baffer;/*数据缓冲区的位置*/unsignedchar*curp;/*指针,当前的指向*/unsignedistemp;/*临时文件,指示器*/shorttoken;/*用于有效性检查*/}FILE;12.1C文件的概念文件类型指针通常定义成FILE类型的指针,称为文件指针。例如:FILE*fp;12.2文件操作函数文件打开函数在C语言中,使用fopen函数来打开文件,fopen函数的调用格式为:fopen(“文件名”,“文件使用方式”);其中文件名是指文件的全名称,包括相应的路径、主文件名、扩展文
5、件名(若有);文件使用方式是指打开文件是为读、写、追加、以及是二进制文件还是文本文件。文件的使用方式及其含义如下:"r"。为读打开一个文本文件。以此方式打开的文件只能用于向计算机输入而不能用作向该文件输出数据,而且该文件应该已经存在。若指定的文件不存在则会出错。②“w”。为写打开一个文本文件。以此方式打开的文件只能用于向该文件写数据(即输出文件),而不能用来向计算机输入。如果原来不存在该文件,则在打开时新建一个以指定的名字命名的文件。如果原来已存在一个以该文件名命名的文件,则在打开时将该文件删去,然后重新建立一个新文件。12.2文件
6、操作函数"a"。向文本文件尾增加数据。此时该文件必须已存在,否则将得到出错信息。打开时,位置指针移到文件末尾。“r+”、“w+”、“a+”。用“r+”、“w+”、“a+”方式打开文件既可以用来输入数据,也可以用来输出数据。用“r+”方式时该文件应该已经存在,以便能向计算机输入数据。用“w+”方式则新建立一个文件,先向此文件写数据,然后可以读此文件中的数据。用“a+”方式打开的文件,原来的文件不被删去,位置指针移到文件末尾,可以添加,也可以读。"rb"、"wb"、"ab"。以读、写、追加的方式打开一个二进制文件。使用方法同"r","w
7、","a"。"rb+"、"wb+"、"ab+"。以读、写、追加的方式打开一个二进制文件,使用方法同"r+""w+""a+"。12.2文件操作函数fopen函数执行后返回一个FILE类型的指针,通常赋给一个文件指针变量(如fp)。这样文件指针fp就和被打开的文件联系起来了,其后对文件的读写就可以通过文件指针fp来进行。例如:fp=fopen("f1","r");说明:如果不能实现“打开”的任务,fopen函数将会返回一个出错信息。此时fopen函数返回一个空指针值NULL。if(fp=fopen("file1","r"))==NULL
8、){printf("不能打开文件");exit(0);}用以上的方式可以打开文本文件或二进制文件,这是ANSIC的规定,用同一种缓冲文件系统来处理文本文件和二进制文件。但目前使用的有些C编译系统可能不完全提供所有这些功能,有的C版
此文档下载收益归作者所有