版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第1717章章 文件文件文件也是一种数据类型,是存储在外部存储设备上的数据集合,可用于保存大量的数据。对文件的处理,主要分为打开与关闭文件、从文件中读取数据和向文件中写入数据、文件的定位、文件的检测。对文件的这些处理都是利用系统函数和指向文件类型的指针变量进行的。本章的主要内容校C文件概述;文件类型指针;文件的打开与关闭;文件的读写操作;文件的定位;文件的检测。17.1 17.1 文件概述文件概述文件是按照某个规则集合在一起保存在外部存储器上的一批数据。组成文件的数据类型可以是各种类型的数据,如整型、字符型、字符串等,也可以是程序清单等。文件可以用于永久地保存大量的数据,存储在磁盘上的数据在
2、计算机关闭以后仍然存在,下一次使用的时候可以从磁盘上读取文件中的数据继续处理。 17.1.1 17.1.1 文件名文件名文件名是文件的标识符,每一个文件都以一个唯一的文件名进行存储。文件名是由一组字符构成的,目录分隔符和空操作符不能出现在文件名中。在对文件进行处理的时候必须给出文件名。文件名的一般组成如下:盘符:路径文件名.扩展名例如:D:webteacherPopCalendar2005Cprograme.txt.17.1.2 17.1.2 文件的类型文件的类型按文件中数据组织形式,可以把文件分为文本文件和二进制文件。在文本文件中,存放的数据都是将其转换成对应的ASCII代码字符来存放的,该
3、文件由一个个字符组成,每一个字节存放一个ASCII码值,代表一个字符。例如,一个整型数据-15621在文本文件中按字符存放,分别存放字符-、1、5、6、2、1,共占6个字节;一个单精度类型数据3.14159,分别存放的是字符3、.、1、4、1、5、9,共占7个字节。二进制文件中的数据都是按其二进制方式存放的,每个数据占用的字节数取决于该数据的数据类型。例如,一个整型数据-15621在二进制文件中占4个字节,单精度类型数据3.14159在二进制文件中占4个字节。17.2 17.2 文件类型指针文件类型指针文件型是一种特殊的结构体,该结构体用来存放文件的有关信息(如文件的名字、文件的状态及文件当前
4、的位置等)。该结构体类型是由系统定义的,取名为“FILE”。对FILE这个结构体类型的定义是在stdio.h头文件中。 文件指针的定义如下:FILE *文件指针变量名;如:FILE *fp;#include 或#include “stdio.h”17.3 17.3 文件的打开与关闭文件的打开与关闭在C语言之中,对文件读写之前必须先打开文件,在使用以后要关闭该文件。文件的打开与关闭都是利用系统函数来实现的,通过调用文件打开函数fopen()和文件关闭函数fclose(),完成文件的打开与关闭。17.3.1 17.3.1 文件打开函数文件打开函数fopenfopen文件打开函数fopen的调用格式
5、为:FILE *fp;fp=fopen(filename,mode);文件打开函数fopen如果打开成功,就返回一个文件类型的指针,并将赋值给文件指针变量fp,如果失败,则返回NULL。文件打开函数fopen有两个参数,filename指定打开的文件名,mode指定文件打开的方式。 (1)文本文件的打开方式有以下几种:r:打开一个已经存在的文本文件,只能从文本文件中读取数据。如果指定文件不存在,程序就会出错。w:打开一个文件文件,只能将数据写入文件。如果已经存在该文件名的文件,文件被重写;如果不存在,则以该文件名建立新的文件。a:以附加方式找开文件,将数据写入文件的尾部。如果文件不存在,创建新
6、的文件用于写入。r+:打开一个已经存在的文本文件,可以从中读取数据,也可以写入数据。w+:打开一个已经存在的文本文件,可以读取数据,也可以写入数据,若文件不存在,则自动建立一个新文件,接受写入的数据;若文件存在,则删去旧文件,建立一个同名新文件,接受写入的数据。a+:打开一个已经存在的文本文件,可以读取数据,也可以从当前文件的尾部追加写入数据。当文件不存在时,创建新的文件用于文件尾写入。(2)二进制文件的打开方式有以下几点:rb:打开一个已经存在的二进制文件,只能从二进制文件中读取数据。如果指定文件不存在,程序就会出错。wb:打开一个二制制文件,只能将数据写入文件。如果已经存在该文件名的文件,
7、文件被重写;如果不存在,则以该文件名建立新的文件。ab:打开一个已经存在的二进制文件,只能从当前文件的尾部追加写入数据。如果文件不存在,创建新的文件用于写入。rb+:打开一个已经存在的二进制文件,可以从中读取数据,也可以写入数据。wb+:打开一个已经存在的二进制文件,可以读取数据,也可以写入数据,若文件不存在,则自动建立一个新文件,接受写入的数据;若文件存在,则删去旧文件,建立一个同名新文件,接受写入的数据。“ab+”,打开一个已经存在的文本文件,可以读取数据,也可以从当前文件的尾部追加写入数据。当文件不存在时,创建新的文件用于文件尾写入。17.3.2 17.3.2 文件关闭函数文件关闭函数f
8、closefclose使用完一个文件后应该去关闭它,以免它再被误用,造成数据丢失。所谓“关闭”就是使文件指针变量不指向该文件,以后不能再通过该指针对其相连的文件进行读写操作。如果需要进行读写操作,要再次打开该文件。文件关闭函数fclose的调用格式为:fclose(文件指针);17.4 17.4 文件的读写操作文件的读写操作当文件以合适的方式打开以后,就可以对其进行读写操作。C语言提供了丰富的数据读写函数,可以按字符读写,可以按行读写,也可以按指定长度的数据块进行读写,还可以进行格式化读写。这些函数都包含在头文件stdio.h中。17.4.1 17.4.1 字符读写函数字符读写函数字符读写函数
9、在处理文件中的数据时,是以字符为单位进行读写的,即每次只读写一个字符。它常用来处理文本文件,但也可以处理二进制文件。1.读取字符函数fgetc读取字符函数fgetc的调用格式为:fgetc(文件指针);2 .写入字符函数fputc向文件中写入字符函数fputc的调用格式为:fputc(字符,文件指针变量);17.4.2 17.4.2 字符串读写函数字符串读写函数字符串读写函数是将文件中的数据以字符串为单位进行处理的,即每次一个字符串。字符串读写函数所处理的文件是文本文件,但也可以是二进制文件。1读取字符串函数fgets从文件中读取字符串函数fgets的功能是从指定的文件中读一个字符串到字符数组
10、中,函数调用的形式为:fgets(字符数组名,n,文件指针);例如:fgets(str,n,fp) 2写入字符串函数fputs文件写入字符串函数fputs的功能是把一个字符串写入到指定的文件中。其调用形式为:fputs(字符串,文件指针) 例如:fputs(“abcd”,fp);使用文件字符串读写函数时,需要以下几点:(1)这两个函数主要用于处理文本文件,也可以用来处理二进制文件,每次读写的是一个字符串。(2)从文件中读取字符串时,不是用字符串结束标记符0来控制字符串结束,而是用组字符串的字符数目或者回车换行符n来控制字符串结束。(3)当正确地读或写一个字符串后,文件的文件指针会自动后移一个字
11、符串的位置。 17.4.3 17.4.3 数据块读写函数数据块读写函数1读取数据块的函数freadfread()函数用来从指定文件中读一个数据块,该函数的调用格式为:fread(buffer,size,count,fp);2写入数据块的函数fwritefwrite函数用来将一个数据块写入文件,该函数的调用格式为:fwrite(buffer,size,count,fp);17.4.4 17.4.4 格式数据读写函数格式数据读写函数1格式数据读取函数fscanf格式数据读取函数fscanf类似与scanf函数,两者都是格式化输入函数,不同的是scanf函数的作用对象是终端键盘,而fscanf函数的
12、作用对象是文件。fscanf函数调用的一般格式为:fscanf(文件指针,格式控制,输入列表)2格式数据写入函数fprintf格式数据写入函数fprintf类似于格式输出函数printf,两者都是格式化输出函数,只不过两者的作用对象不同,fprintf函数输出到文件,printf函数输出到终端。fprintf函数调用的一般格式为:fprintf(文件指针,格式控制,输入列表)17.5 17.5 文件的定位文件的定位C语言中,打开文件时会产生一个文件指针指向文件的头,在读取文件时,需要从文件头开始,每次读写完一个数据后,该位置指针会自动指向一下个数据的位置。为了能够从文件中直接读取某个数据,系统
13、提供了能将文件内部指向直接定位到某个字节上的函数。17.5.1 17.5.1 文件头定位函数文件头定位函数rewindrewind文件头定位函数rewind的作用是将文件位置指针返回到文件指针变量指向的文件的开头。函数rewind调用的一般格式为:rewind(文件指针)17.5.2 17.5.2 文件随机定位函数文件随机定位函数fseekfseek文件头定位函数rewind是将文件位置指向文件的开头,要读取某个数据需要从头开始,不方便,C语言提供了文件随机定位函数fseek能将文件位置指针按需要移动到任意位置,可以实现对文件的随机读取。文件随机定位函数fseek的一般调用格式为:fseek(
14、文件指针,位移量,起始位置)fseek(fp,10L,0);fseek(fp,20L,1);fseek(fp,-30L,2);17.5.3 17.5.3 测试当前位置函数测试当前位置函数ftellftell在对文件进行读写时,特别是多次调用随机定义函数fseek以后,文件位置指针的值经常发生变化,很难确定其当前的位置。C语言定义的了测试当前位置的函数ftell。测试当前位置函数ftell调用的一般格式为:ftell(文件指针)17.6 17.6 文件的检测文件的检测C语言中,对文件的检测主要是对文件末尾、读写出错等方面讲行的检查和测试,C语言常用的文件检测函数有文件末尾检测函数feof()、文
15、件读写出错检测函数ferror()等。17.6.1 17.6.1 文件末尾检测函数文件末尾检测函数feoffeof在文本文件中,C语言规定EOF为文件结束标志,EOF的值为-1,因为在ASCII码表中没有-1所对应的字符。但在二进制文件中,-1可能为用效数据,就不能用EOF来作为文件结束标志。C语言专门定义了feof函数作为二进制文件的结束标志,也可以作为文本文件的结束标志。文件末尾检测函数feof的一般调用格式为:feof(文件指针)17.6.2 17.6.2 文件读写出错检测函数文件读写出错检测函数ferrorferror在程序执行过程中,特别是文件读写过程中,会出现一会不可预见的错误。C语言定义了文件读写出错检测函数ferror。读写文件出错检测函数fe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026四川攀枝花盐边县医共体北部片区招聘7人备考题库及参考答案详解
- 2026四川宜宾市筠连县事业单位第一次引进高层次人才50人备考题库及参考答案详解1套
- 2026中铁城市发展投资集团有限公司招聘10人备考题库及答案详解(有一套)
- 2026江苏徐州市新盛集团下属园博园公司招聘6人备考题库及1套完整答案详解
- 2026广东中山大学招聘网络与信息中心专业技术人员1人备考题库及答案详解(名师系列)
- 森林园林康养师岗前强化考核试卷含答案
- 农业经理人岗前决策力考核试卷含答案
- 碳化钛制备工岗前安全强化考核试卷含答案
- 二手车整备工岗前技术综合考核试卷含答案
- 硅冶炼工发展趋势考核试卷含答案
- 河北嘉恒隆生物科技有限责任公司建设年产 10000 吨食品用明胶、5000 吨食用蛋白粉、5000 吨宠物饲料和 5000 吨油脂资源综合利用项目环境影响报告表
- 2022室外排水设施设计与施工-钢筋混凝土化粪池22S702
- 人口社会学(第二版) 课件 第八章 婚姻家庭
- 摩托车的排气系统与排放控制
- 饭店送餐合同协议书
- 房颤的中医治疗
- 【医学课件】妊娠合并系统性红斑狼疮
- HDS-存储-AMS配置安装手册-V1.0
- 2023年湖南省长沙市中考物理试题(原卷)
- qdslrdashboard应用软件使用说明
- YY/T 0128-2004医用诊断X射线辐射防护器具装置及用具
评论
0/150
提交评论