C语言文件习题.ppt
《C语言文件习题.ppt》由会员分享,可在线阅读,更多相关《C语言文件习题.ppt(69页珍藏版)》请在三一办公上搜索。
1、文件,1,引子,文件,scanfgetchargets.,printfputcharputs.,2,第十一章 文件,本章学习要点正确理解文件的概念,文件系统的特点;掌握文件指针的概念和定义方法;熟练使用文件读写函数,学会定位文件指针。,掌握本章内容的捷径:对文件永远是:打开操作关闭学会文件操作库函数(即标准I/O库函数)的用法,3,第十一章 文件,文件概述文件处理文件顺序读写文件随机操作文件检测文件实例,4,11.1 文件概述,文件的定义 存储在外部介质上(如磁盘和磁带等外存储器)的数据或信息的集合。例如:程序文件中保存着程序,而数据文件中保存着数据。main.cC语言源程序 文本文件main
2、.obj目标文件 二进制文件main.exe可执行文件 二进制文件,5,11.1 文件概述,文件的性质 文件是一个有序的数据序列,数据之间有着严格的排列次序关系,可以按照它们的排列顺序,依次进行访问,也可以按照需要,访问任意位置上的数据。,6,系统对文件的处理过程 系统对文件的处理过程就是对文件进行输入/输出操作的过程。,文件,程序数据区,输出文件缓冲区,输入文件缓冲区,计算机内存,计算机外存,写文件称为输出,读文件称为输入,7,11.1 文件概述,文件的分类,文本文件,二进制文件,普通文件(磁盘文件),特殊文件(标准设备文件),缓冲文件系统,非缓冲文件系统,8,从文件数据的组织形式(存储格式
3、)看ASCII文件(或称文本文件,即TEXT文件)文本文件中的数据采用ASCII码格式存储,全部数据转换为ASCII码。每个ASCII字符占1个字节。ASCII文件使用文本编辑器可直接阅读。二进制文件 对数据在内存中的二进制存储格式不做任何转换,直接存入文件,形成二进制文件。二进制文件在操作系统下不能直接阅读。,9,11.1 文件概述,例如:将整数1024分别存储到ASCII文件和二进制文件中,将采用不同的编码形式,占用不同的字节长度。,内存中的存储形式:补码,0000 0100 0000 0000,ASCII文件:ASCII码,二进制文件:补码,0000 0100 0000 0000,占4个
4、字节,占2个字节,10,比较:ASCII文件中,每个字符以ASCII码形式存储,方便对字符的逐个处理;在操作系统下或使用文本编辑器时,可以直接阅读、修改,方便与其它系统进行数据交换。缺点是占用磁盘存储空间多,并且系统要付出将内存中的二进制形式转为ASCII码的时间开销。用二进制形式输出,可以节省磁盘空间和转换时间,但输出的数据因为是内存中的格式,在操作系统下和一般的编辑器中不能直接识别。,11,11.1 文件概述,从用户观点看普通文件(也称为磁盘文件)特殊文件(也称为标准设备文件或标准I/O文件)普通文件是以磁盘为对象且无其它特殊性能的文件。特殊文件是以终端为对象的标准的设备文件。,12,11
5、.1 文件概述,在C语言中,“文件”的概念具有更广泛的意义。与每台主机相连的所有输入输出设备都看作是一个文件。即将实际的物理设备抽象为逻辑文件,它们也被称为设备文件。例如:键盘是输入文件 stdin(标准输入文件)显示器是输出文件 stdout(标准输出文件)打印机是输出文件 PRN,13,11.1 文件概述,从C语言对文件的处理方法看缓冲文件系统非缓冲文件系统 缓冲文件系统:对每个正在使用的文件,系统自动在内存中为其开辟一个文件缓冲区。称为高级文件操作。非缓冲文件系统:系统不会自动开辟缓冲区,文件缓冲区是由程序自己设置的。称为低级文件操作。,14,11.1 文件概述,在83年以后ANSI C
6、标准中取消了非缓冲文件系统,对文本文件和二进制文件均统一采用缓冲文件系统进行处理。本课程学习:缓冲式文件操作方式下,对磁盘文件进行基本操作。对文本文件和二进制文件有不同的处理方式。使用标准输入/输出库(stdio.h)函数来实现文件操作。,15,第十一章 文件,文件概述文件处理文件顺序读写文件随机操作文件检测文件实例,16,文件类型 FILE 在缓冲文件系统中,用一个 FILE 类型的结构变量来描述一个文件,该结构变量用于存放文件的有关信息,如文件名、文件状态等。在C语言中,无论是一般磁盘文件还是设备文件,都要通过文件结构的数据集合进行输入输出处理。文件结构不需要用户自己定义,是由系统事先定义
7、好的,包含在头文件 stdio.h 中,用户可以直接使用。,11.2 文件处理,17,文件结构类型FILE:typedef struct int _fd;/*文件位置指针,即当前文件的读写位置*/int _cleft;/*文件缓冲区中剩余的字节数*/int _mode;/*文件操作模式*/char*nextc;/*用于文件读写的下一个字符位置*/char*_buff;/*文件缓冲区位置(指针)*/FILE;文件结构变量在打开文件时由操作系统自动建立,用户使用文件时无需重复定义。在使用文件的时候要使用文件包含命令:#include,类型说明语句typedef:定义新的类型来代替已有类型:type
8、def int INT,18,11.2 文件处理,如何引用文件结构文件指针 C语言中对文件的操作都要通过指向该文件结构的指针。文件指针变量说明形式:FILE*文件型指针变量名;例如:FILE*fp;/*fp 是一个指针变量*/,文件指针是程序和文件联系的纽带,19,使用文件的一般步骤打开文件 操作文件 关闭文件打开文件:建立用户程序与文件的联系,为文件开辟文件缓冲区。操作文件:是指对文件的读、写、追加和定位操作:读操作:将文件中的数据读入计算机。写操作:向文件输出数据。追加操作:将数据写到原有数据的后面。定位操作:移动文件读写位置指针。关闭文件:切断文件与程序的联系,将文件缓冲区的内容写入磁盘
9、,并释放文件缓冲区。,20,打开文件(fopen)fopen函数的调用形式是:FILE*fp;fp=fopen(文件名,文件使用方式);文件名:需要打开的文件名称(字符串)。文件使用方式:是具有特定含义的符号。函数功能:按指定的文件使用方式打开指定的文件。若文件打开成功,则返回值为非NULL指针;若文件打开失败,返回NULL。,为该文件建立一个文件结构(变量),然后让指针指向该文件结构,例:fp=fopen(file1,r),21,11.2 文件处理,文本文件的三种基本打开方式“r”:只读方式。为读(输入)文本文件打开文件。若文件不存在,则返回NULL。“w”:只写方式。为写(输出)文本文件打
10、开文件。若文件不存在,则建立一个新文件;若文件已存在,则要将原来的文件清空。“a”:追加方式。在文本文件的末尾增加数据。若文件已存在,则保持原来文件的内容,将新的数据增加到原来数据的后面;若文件不存在,则创建。,22,二进制文件的三种基本打开方式“rb”:只读方式“wb”:只写方式“ab”:追加方式文件的其它打开方式“r+”:可对文本文件进行读/写操作。若文件不存在返回NULL;若文件存在,内容不会被清空。“w+”:可对文本文件进行读/写操作。若文件已经存在,则要先将文件原来的内容清空。“a+”:可对文本文件进行读/追加操作。“rb+”:可对二进制文件进行读/写操作。“wb+”:可对二进制文件
11、进行读/写操作。“ab+”:可对二进制文件进行读/追加操作。,23,常见文件打开操作if(fp=fopen(filename,r)=NULL)printf(Cannot open file.n);exit(0);/*打开文件出错,调用库函数终止程序*/含义:以只读方式打开文件名为filename的文件。文件名可以是从盘符开始的完整路径名,也可以是相对路径。,11.2 文件处理,24,11.2 文件处理,练习:以下可作为函数fopen中第一个参数的正确格式是:A.c:usertext.txtB.c:usertext.txt C.c:usertext.txtD.c:usertext.txt,25,
12、11.2 文件处理,char*pfilename;if(fp=fopen(pfilename,r)=NULL)printf(Cannot open file.n);exit(0);含义:以只读方式打开以 pfilename 指向的字符串为文件名的文件。,26,关闭文件(fclose)fclose函数的调用形式:FILE*fp;.fclose(fp);fp:已经打开的文件指针。函数功能关闭fp指定的文件,切断缓冲区与该文件的联系,并释放文件指针。若文件关闭成功,返回值为0;若文件关闭失败,返回非0值。,27,11.2 文件处理,系统标准设备文件 标准设备文件由系统自动打开和关闭,其文件结构的指针
13、由系统命名,用户在程序中可直接使用。C语言中提供了三个标准设备文件的指针:stdin 标准输入文件(键盘)stdout 标准输出文件(显示器)stderr 标准错误输出文件(显示器),28,第十一章 文件,文件概述文件处理文件顺序读写文件随机操作文件检测文件实例,29,11.3 文件顺序读写,文件顺序操作 对文件的操作(文件读写)必须按文件中字符的先后顺序进行,只能在操作了第i个字符之后,才能操作第i+1个字符。在对文件操作时,文件的位置指针由系统自动向前(文件尾方向)移动。,30,11.3 文件顺序读写,进行顺序操作的函数:字符输入输出函数 fgetc fputc字符串输入输出函数 fget
14、s fputs格式化输入输出函数 fscanf fprintf数据块输入输出函数 fread fwrite,31,键盘文件,内存,显示器文件,磁盘文件,磁盘文件,scanfgetchargets.,printfputcharputs.,fscanffgetcfgetsfread.,fprintffputcfputsfwrite.,32,字符输入输出(fgetc/fputc)输入函数:ch=fgetc(fp);fp为已经打开的文件的指针函数功能:从指定的文件中读取一个字符。即:从fp所指向的文件(该文件必须是以读或读写方式打开的)中读取一个字符返回,读取的字符赋给变量ch。若读取字符时文件已经结
15、束或出错:对于ASCII文件,文件结束时,返回文件结束标记EOF(-1);对于二进制文件,要使用feof函数来判断文件是否结束。,33,11.3 文件顺序读写,输出函数:fputc(ch,fp);ch为需要输出的字符函数功能:将一个字符输出到指定文件中。即将字符变量ch中的字符输出到fp所指向的文件。若输出操作成功,该函数返回输出的字符;否则,返回EOF。,34,例:显示一个文本文件的内容#include int main()FILE*fp;char filename20,ch;printf(Enter filename:);scanf(%s,filename);/*输入文件名*/if(fp=
16、fopen(filename,r)=NULL)/*打开*/printf(“file open error.n”);/*出错处理*/exit(0);while(ch=fgetc(fp)!=EOF)/*读字符*/putchar(ch);fclose(fp);/*关闭文件*/,35,例:使用标准输出文件显示文本文件内容#include int main()FILE*fp;char filename20,ch;printf(Enter filename:);scanf(%s,filename);/*输入文件名*/if(fp=fopen(filename,r)=NULL)/*打开*/printf(“fi
17、le open error.n”);/*出错处理*/exit(0);while(ch=fgetc(fp)!=EOF)/*读字符*/fputc(ch,stdout);/*向标准输出文件输出(显示)*/fclose(fp);/*关闭文件*/,36,例:复制文本文件int main()FILE*fp1,*fp2;char file120,file220,ch;printf(Enter filename1:);scanf(%s,file1);printf(Enter filename2:);scanf(%s,file2);if(fp1=fopen(file1,“r”)=NULL)/*打开文件1*/pr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 文件 习题

链接地址:https://www.31ppt.com/p-5426346.html