C语言程序设计教学做一体化-电子教案-滕泓虬 模块10

上传人:E**** 文档编号:89386342 上传时间:2019-05-24 格式:PPT 页数:140 大小:599KB
返回 下载 相关 举报
C语言程序设计教学做一体化-电子教案-滕泓虬 模块10_第1页
第1页 / 共140页
C语言程序设计教学做一体化-电子教案-滕泓虬 模块10_第2页
第2页 / 共140页
C语言程序设计教学做一体化-电子教案-滕泓虬 模块10_第3页
第3页 / 共140页
C语言程序设计教学做一体化-电子教案-滕泓虬 模块10_第4页
第4页 / 共140页
C语言程序设计教学做一体化-电子教案-滕泓虬 模块10_第5页
第5页 / 共140页
点击查看更多>>
资源描述

《C语言程序设计教学做一体化-电子教案-滕泓虬 模块10》由会员分享,可在线阅读,更多相关《C语言程序设计教学做一体化-电子教案-滕泓虬 模块10(140页珍藏版)》请在金锄头文库上搜索。

1、C语言程序设计 教学做一体化 主编 滕泓虬 中国水利水电出版社,模块十 文件,事实上我们对于“文件”应该不会感到陌生,在前面的实例中完成一个程序的上机过程都要首先建立一个C语言的源文件(后缀名为.c),然后编译成相应的目标文件(后缀名为.obj),最后链接成可执行文件(后缀名为.exe)。这些程序都是以文件的形式在磁盘中保存的。,10.1 文件的概述,学习目标 了解文件和文件名的概念; 掌握文件的分类和操作流程。,不管是Windows操作系统还是UNIX操作系统,均是以文件为单位管理数据的。也就是说,如果要找到存储在磁盘上的数据,需要先按照文件名找到数据所在的文件,然后才能从文件中读取或写入数

2、据。同样,如果想在磁盘中保存某些数据,则需要先建立一个文件,然后才能向文件中输入数据。,案例10-1 文件和文件名的概念。,10.1.1 文件和文件名的概念,案例分析 1、文件和文件名 2、文件的广泛含义,案例分析,案例10-2 按照数据的组织形式对文件进行分类,说出整数123以ASCII形式和二进制形式存储到文件中的区别。,10.1.2 文件的分类,1、整数123如果以ASCII文件形式存储,则存储形式如下: 00110001 00110010 00110011 在文件中按顺序存储123分别对应的ASCII码,比如1的ASCII码是49(十进制),对应的二进制ASCII码就是00110001

3、。整数123在磁盘文件中占用3个字节。 2、同样是整数123,如果以二进制文件形式存储,存储形式是: 00000000 01111011 在内存中存储的就是整数123对应的二进制数,整数在内存中占两个字节,所以整数123在内存中也是占有两个字节的存储空间。那么在文件中如果以二进制形式存储,则存储形式和在内存中存储形式一样。,案例分析,1、按照数据的组织形式对文件分类。 (1)ASCII文件 (2)二进制文件 2、ASCII文件和二进制文件的优缺点比较。,知识链接,C语言没有提供对文件进行操作的语句,所有的文件都是利用C语言编译系统所提供的库函数实现的。多数C语言编译系统都提供两种文件处理方式:

4、一种是“缓冲文件系统“,另一种是“非缓冲文件系统”。也就是说C语言提供了两类文件操作函数来存取文件。,10.1.3 缓冲文件系统和非缓冲文件系统,案例10-4 文件的操作流程。,10.1.4 文件的操作流程,对文件的操作流程一般遵循以下四个步骤: 1、定义一个文件类型的指针变量指向文件 一般格式是: FILE *指针变量标识符; 例如: FILE *fp; 2、调用库函数fopen函数打开文件,同时将打开文件操作返回的文件指针值赋值给(1)中定义的文件类型的指针变量,是该指针变量指向文件。例如: fp=fopen(“文件名”, “操作方式”); 其中fopen的参数”操作方式”是指读/写等方式

5、。,3、通过文件指针对文件进行读/写操作 例如:调用库函数fputs()或fgets()完成读写文件的操作。 4、通过文件指针关闭文件,例如: 调用库函数fclose fclose(fp); 提示:对文件操作的库函数,函数原型均在头文件stdio.h中。所以使用文件操作的库函数都要包含头文件stdio.h。,学习目标 了解文件信息结构体类型; 掌握文件指针的概念和定义格式; 掌握定义文件指针的目的和作用; 在C语言中用一个指针变量指向一个文件,该指针称为文件指针。,10.2 文件指针,定义指向文件的指针。,案例10-5,1、文件指针说明的一般格式如下: FILE *文件型指针变量名 其中FIL

6、E必须大写,也就是应和stdio. h头文件中定义的一致。 2、定义一个文件指针: FILE *fp; fp是表示指向FILE结构的指针变量,它指向在内存中为某个文件开辟的用来保存文件信息的结构体变量的首地址,然后按照结构体变量提供的信息找到文件,实施对文件的操作。实际上fp是指向保存文件信息的结构体类型的指针,但习惯上也笼统地把fp称为指向一个文件的指针。,案例分析,1、文件指针是缓冲文件系统中的一个非常重要的概念。系统为每个正在使用的文件在内存中开辟一个区域来存放该文件的相关信息。比如文件名、文件属性、文件操作模式、文件缓冲区位置等。这些信息保存在一个结构体类型的变量中。该结构体类型由系统

7、定义,其名为FILE。 2、C语言系统定义的文件结构体类型FILE,可以在头文件stdio.h中查看它的定义。在编译系统文件夹中的include文件夹下找到该头文件并打开,可以看到下面的定义:,知识链接,typedef struct short level; /* 缓冲区满或空的程度fill/empty level of buffer */ unsigned flags; /* 文件状态标志File status flags */ char fd; /* 文件描述符File descriptor */ unsigned char hold; /*如果没有缓冲区就不读字Ungetc char i

8、f no buffer */ short bsize; /* 缓冲区大小Buffer size */ unsigned char *buffer; /* 数据缓冲区位置Data transfer buffer */ unsigned char *curp; /* 当前的指向Current active pointer */ unsigned istemp; /* 临时文件指示Temporary file indicator */ short token; /* 用于有效性检查 Used for validity checking */ FILE;,3、文件型指针就是指向类型为FILE的文件结构

9、类型的指针。定义文件指针的目的就是通过文件指针对它指向的文件进行各种操作。在缓冲文件系统中,对已打开的文件进行I/O操作都是通过文件指针进行的。因此,文件操作的第一步就是定义文件指针。,学习目标 理解文件的使用方式; 掌握文件的打开方法; 掌握文件的关闭方法。 在对磁盘文件进行读写操作之前,必须先打开文件,使用完毕要关闭文件。,10.3 文件的打开和关闭,假设在C盘根目录下,有一个二进制文件,文件名为:student.dat,以只读的方式打开它。,案例10-6,案例程序,#include main() FILE *fp; /*定义文件指针*/ if(fp=fopen(“c:student.da

10、t”, “rb”)=NULL) /*调用fopen函数打开文件*/ printf(“Cannot open this file!n”); /*输出失败信息*/ exit(1); /*退出操作*/ else printf(“You have opened the file.n”);/*提示打开成功*/ ,1、在程序中通过判断fopen函数的返回值来判定是否成功打开一个文件,并显示相应的提示信息。 2、调用fopen函数会返回指针值,如果成功,则返回文件指针;如果失败,则返回指针为NULL。表达式(fp=fopen(“c:student.dat”, “rb”)=NULL就是判断打开student.

11、dat文件时返回的指针是否为NULL,如果是,则表示不能打开C盘根目录下的student.dat文件,并给出出错提示信息“Cannot open this file!”,然后用函数exit(1)结束运行。如果不是NULL,则表示成功打开文件,并输出成功打开信息。,案例分析,提示:exit()函数的功能就是关闭已打开的文件,结束程序运行,返回操作系统,并将“程序状态值”作为函数参数返回给操作系统。当“程序状态值”为0时,表示程序正常退出;非0值时,表示程序非正常退出。,1、打开文件就是在内存中建立文件的各种有关信息,并使文件指针指向该文件。也就是在前面定义文件指针变量的基础上,再使该指针指向打开

12、的文件,以便进行后续的操作。 2、C语言中,使用fopen()函数打开文件,调用fopen()函数的方式如下: 文件指针名=fopen(“文件名”, “使用文件方式”);,知识链接,3、fopen()函数的功能 函数返回一个指向指定文件的指针。 例如: FILE *fp; fp=fopen(“abc”, “r”); 它表示要打开名为abc的磁盘文件,使用文件方式为“读入”(r代表read,即读入),fopen函数返回一个指向文件abc的指针并赋给文件指针变量fp,使fp和文件abc建立联系,或者说,fp指向文件abc。,4、调用fopen()函数需要注意的问题: (1)“文件指针名”必须是被说

13、明为FILE类型的指针变量。如:FILE *fp; (2)函数的实参“文件名”是要打开的文件名称,也就是准备要访问的文件的名字。该文件名可以包含路径。它可以是一个用双引号括起来的字符串常量,如fopen(“abc”, “r”);中的“abc”,也可以是一个指向字符串的指针。注意使用指针形式时,不使用双引号。 (3)“使用文件方式”是指文件的类型(二进制文件还是文本文件)和操作要求(读文件、写文件或读写文件)。 (4)让指针变量指向文件,即把函数返回值(FILE结构的首地址)赋给定义的文件指针变量。如fp=fopen(“abc”, “r”); 又如: FILE *fpt; fpt=fopen(“

14、D:hi”, “rb”);,以写入方式新建一个文件,如果文件已经存在,提示是否覆盖原文件。,案例10-7,#include void main() FILE *fp; /*定义文件指针*/ char filename20, ch; printf(“Please input the filename:“); /*输入要建立的文件名*/ scanf(“%s“, filename); fp=fopen(filename, “r“);/*已只读方式打开文件*/ if(fp!=NULL) /*判断是否成功打开文件,如果成功说明该文件已存在*/,案例程序, printf(“The file already

15、 exists, replace it or not?(y/n)“); /*提示已有同名文件*/ getchar(); scanf(“%c“,else /*新建失败*/ printf(“The file cannot be created.n“); exit(1); fclose(fp); /*关闭文件*/ ,运行程序,假设原来在D盘中没有文件score.txt,结果是: Please input the filename: d:score.txt /*输入文件名*/ The file d:score.txt has been created. /*提示建立了文件*/ 再次运行程序,结果是:

16、Please input the filename: d:score.txt /*输入文件名*/ The file already exists, replace it or not?(y/n) n/*是否替换,输入n则不替换*/ 再次运行程序,结果是: The file already exists, replace it or not?(y/n) y /*选择替换原文件*/ The file d:score.txt has been created. /*新建了文件,并覆盖了原文件*/,1、首先输入要新建的文件名,例如:d:score.txt ,表示在d驱动器磁盘根目录下建立文本文件score.txt。然后再以只读的方式打开文件,如果不能打开(fp=NULL),则新建该文件。见运行结果第一和第二行。 2、再次运行程序,这时在d盘根目录下已建立文件score.txt,则读取

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号