《-文件的概述与打开教学课件-.pptx》由会员分享,可在线阅读,更多相关《-文件的概述与打开教学课件-.pptx(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、LOGOLOGO掌握文件类型指针(FILE类型指针)的概念、存储方式和文件打开方式Teacher teaching designCONTENTS 目 录文件概述文件打开与关闭案例分析仿真演练文件概述PART 01C语言中的文件是流式文件,即一个C文件就是上述的字节流或者二进制流二进制文件可以节省数据的存储空间和缩短数据的访问时间把数据按其在内存中的存储形式存放在外存中的文件称为二进制文件二进制文件“文件”是一种有序的数据集合,通常存储在计算机的外部存储介质上。系统和用户都可以将具有一定独立功能的程序段、程序模块、数据等命名存为文件。定义我们把数据按其ASCII码形式存放的文件称为ASCII文件
2、也叫文本文件文本文件文件的定义及存储方式ASCII码:00110101 00110110 00110111 00111000十进制码:5 678共占用4个字节。按ASCII码形式存储,则将5678按字符形式一一将其对应的ASCII码存储在磁盘上,占四个字节。数据5678的存储形式为:文件的存储二进制码:00110101 00110110 00110111 00111000只占二个字节。二进制文件虽然也可在屏幕上显示,C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。ASCII码文件可在屏幕上按字符显示,例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。
3、由于是按字符显示,因此能读懂文件内容。C系统在处理这些文件时,输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。因此也把这种文件称作“流式文件”。ASCII文件二进制文件文件的存储typedef struct shortlevel;/*缓冲区“空”或者“满”的程度*/unsignedflags;/*文件状态标志*/charfd;/*文件描述符*/unsigned charhold;/*若没有缓冲区不读取字符*/shortbsize;/*缓冲区大小,一般512字节*/unsigned char*buffer;/*缓冲区的位置*/unsigned char*curp;/*当前
4、的指针指向*/unsignedistemp;/*临时文件,指示器*/shorttoken;/*用作有效性检查*/FILE;FILE结构体类型的定义系统为文件在内存中自动开辟一个缓冲区来存放文件的信息,C语言是用一个结构体变量来存放这些信息的,通常由系统定义了FILE结构体类型,该结构类型由系统定义、取名为FILE。概念结构类型名“FILE”必须大写。文件类型指针概念表示fp是一个指向FILE类型结构体的指针变量。可以使fp指向某一个文件的结构体变量,从而通过该结构体变量中的文件信息能够访问该文件。FILE*fp;定义格式*文件类型指针概念文件打开与关闭PART 02文件在进行读写操作之前要先打
5、开,使用完毕要关闭。实际上是建立文件的各种有关信息,并使文件指针指向该文件,以便进行其它操作打开文件即断开指针与文件之间的联系,也就是禁止再对该文件进行操作。关闭文件在语言中,文件操作都是由库函数来完成的。添加标题内容该函数返回一个指向FILE类型的指针,如果为空指针NULL,则表示文件打开错误,通常在读写文件之前来检验打开文件是否正确返回值2如:if(fp=fopen(test.txt,w)=NULL)出错处理 “文件指针名”必须是被说明为FILE 类型的指针变量;“文件名”是被打开文件的文件名;“打开文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。3调用的一般形式:
6、文件指针名=fopen(文件名,打开文件方式);文件的打开(fopen函数)1文件的打开根据对文件的操作不同,可以不同方式打开文件文件的操作方式 r(read):读 w(write):写 a(append):追加 t(text):文本文件,可省略不写 b(banary):二进制文件 +:读和写六个字符的含义1文件使用方式由r,w,a,t,b,+六个字符拼成文件的打开若要向一个已存在的文件追加新的信息,只能用“a”方式打开文件。但此时该文件必须是存在的,否则将会出错。追加模式用“w”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,
7、重建一个新文件。凡用“r”打开一个文件时,该文件必须已经存在,且只能从该文件读出。只读模式文件的打开方式只写模式 if(fp=fopen(c:hzk16,rb)=NULL)printf(nerror on open c:hzk16 file!);getch();exit(1);在打开一个文件时,如果出错,fopen将返回一个空指针值NULL。在程序中可以用这一信息来判别是否完成打开文件的工作,并作相应的处理。因此常用以下程序段打开文件:把一个文本文件读入内存时,要将ASCII码转换成二进制码,而把文件以文本方式写入磁盘时,也要把二进制码转换成ASCII码,因此文本文件的读写要花费较多的转换时间
8、。对二进制文件的读写不存在这种转换。温馨提示文件的打开fclose函数用来关闭一个由fopen函数打开的流文件,把缓冲区里的内容传给文件。因此必须在程序结束前关闭文件,否则会引起数据丢失、文件损坏及其他错误。int fclose(FILE*fp);调用方式该函数返回一个整型值,如果文件关闭成功,则返回值等于0,否则表示出错。fclose函数文件的关闭打开一个c盘test目录下的文本文件readme.txt用以读取其中的内容,然后关闭。例题感知#include void main()FILE*fp;fp=fopen(c:testreadme.txt,rt);if(fp=fopen(c:hzk16
9、,rb)=NULL)printf(nerror on open c:hzk16 file!);getch();exit(1);fclose(fp);应用举例案例分析交流提升PART 03A)文本文件和数据文件 B)文本文件和二进制文件 C)数据文件和二进制文件 D)数据代码文件C语言可以处理的文件类型是()C语言把文件看作是一个字符的序列,即由一个个字符的数据流组成,一个文件是一个字符流。能对数据流处理的文件形式只能是文本文件和二进制文件解析案例分析答案为B下列语句中,将C定义为文件型指针的是()A)FILE c;B)FILE*c;C)file c;D)file*c;文件控制块的类型已由系统命
10、名为FILE.所以定义文件指针变量是C,就得用代码:“FILE*c;”解析案例分析下述关于C语言文件操作的结论中,()是正确的。A)对文件操作必须先关闭文件 B)对文件操作必须先打开文件C)对文件操作顺序无要求 D)对文件操作前必须先测试文件是否存在,然后再打开文件解析对文件进行读写操作之前必须先打开文件,打开文件意味着将文件与一个指针相连,然后才能通过指针操作文件。通过打开文件也可以测试文件是否存在案例分析若要打开已经存在的非空文件”FILE”进行修改,正确的打开语句是()A)fp=fopen(”FILE”,”r”);B)fp=fopen(”FILE”,”ab+”);C)fp=fopen(”
11、FILE”,”w+”);D)fp=fopen(”FILE”,”r+”);解析fopen()函数的功能是以适当的文件模式打开指定的文件,若指定的文件不能打开,该函数返回0,否则返回非0值。要对存在的文件进行修改,则说明对文件要进行读写操作。案例分析仿真演练体验探索PART 041、file1.txt文件已经存在,执行fopen(“file1.txt”,”r+”)的功能是()。A)打开file1.txt文件,清除原有的内容;B)打开file1.txt文件,只能写入新的内容;C)打开file1.txt文件,只能读取原有内容;D)打开file1.txt文件,可以读取和写入新的内容;仿真演练2、若要打开
12、A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是()。A)fopen(A:userabc.txt,r)B)fopen(A:userabc.txt,r+)C)fopen(A:userabc.txt,rb)C)fopen(A:userabc.txt,w)添加标题内容3、以下叙述中错误的是()A)C语言中对二进制文件的访问速度比文本文件快 B)C语言中,随机文件以二进制代码形式存储数据 C)语句 FILE fp;定义了一个名为fp的文件指针 D)C语言中的文本文件以ASCII码形式存储数据仿真演练4、执行如下程序段#includeFILE*fp;Fp=fopen(“file”,”w”);则磁盘上生成的文件全名是()A)file B)file.c C)file.dat D)file.txt仿真演练LOGOLOGO点击输入简要文字内容,需概括精炼,不用多余的文字修饰,言简意赅的说明分项内容。演讲老师:XXXX 演讲时间:XXXXTeacher teaching design