C语言程序设计 授课教案
学时安排:2 ~4
授课题目:第十一章 文件操作 目标要求:
掌握文件类型指针的使用;熟悉文件操作函数的功能和使用;了解文件的概念 授课类型: 理论课 授课场地: 教室 教学方式:讲授、演示、提问、讨论 教辅设备: 投影仪 授课内容:
第十一章 文件操作
11.1 文件概述
1、文件:存储在外部介质上一组相关数据的集合。
例如,程序文件就是程序代码的集合;数据文件是数据的集合。
2、文件名:操作系统以文件为单位对数据进行管理,每个文件有一个名称,文件名是文件的
标识,操作系统通过文件名访问文件。
例如,通过文件名查找,打开文件,然后读取或写入数据。
3、磁盘文件、设备文件:
(1) 磁盘文件:文件一般保存在磁介质(如软盘、硬盘)上,所以称为磁盘文件。 (2) 设备文件:操作系统还经常将与主机相连接的I/O设备(如键盘-输入文件、显示器、
打印机-输出文件)也看作为文件,即设备文件。
很多磁盘文件的概念、操作,对设备文件也同样有意义,有效。
4、ASCII文件、二进制文件:根据文件的组织形式,文件可以分为ASCII文件和二进制文
件。
(1)ASCII文件(文本文件):每个字节存放一个ASCII码,代表一个字符。ASCII文件可以
阅读,可以打印,但是它与内存数据交换时需要转换。
(2)二进制文件:将内存中的数据按照其在内存中的存储形式原样输出、并保存在文件中。
二进制文件占用空间少,内存数据和磁盘数据交换时无须转换,但是二进制文件不可阅读、打印。
1 C语言程序设计 授课教案
例如:同样的整数10000,如果保存在文本文件中,就可以用notepad,edit等文本编辑器阅读,也可以在dos下用type显示,它占用5个字节;如果保存在二进制文件中,不能阅读,但是我们知道一个整数在内存中用补码表示并占用2个字节,所以如果保存在二进制文件中就占用2个字节。
文本文件/二进制文件不是用后缀来确定的,而是以内容来确定的,但是文件后缀往往隐含其类别,如*.txt代表文本文件,*.doc,*.bmp,*.exe二进制文件。
5、缓冲文件系统、非缓冲文件系统:
(1)缓冲文件系统:系统自动地在内存中为每个正在使用的文件开辟一个缓冲区。在从磁盘
读数据时,一次从磁盘文件将一些数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个将数据送给接受变量;向磁盘文件输出数据时,先将数据送到内存缓冲区,装满缓冲区后才一起输出到磁盘。减少对磁盘的实际访问(读/写)次数。ANSI C只采用缓冲文件系统。
(2)非缓冲文件系统:不由系统自动设置缓冲区,而由用户根据需要设置。 C语言中,没有输入输出语句,对文件的读写都是用库函数实现的。
11.2文件类型
1、文件类型(结构体)- FILE类型
FILE类型是一种结构体类型,在stdio.h中定义,用于存放文件的当前的有关信息。 程序使用一个文件,系统就为此文件开辟一个FILE类型变量。程序使用几个文件,系统就开辟几个FILE类型变量,存放各个文件的相关信息。
2、文件指针变量(文件指针)
typedef struct { short level; /* fill/empty level of buffer */ unsigned flags; /* 文件状态标志 */ char fd; /* 文件描述符 */ unsigned char hold; /* Ungetc char if no buffer */ short bsize; /* 缓冲区大小 */ unsigned char *buffer; /* 数据传输缓冲区 */ unsigned char *curp; /* 当前激活指针 */ unsigned istemp; /* 临时文件指示器 */ short token; /* 用于合法性校合 */ } FILE; 2 C语言程序设计 授课教案
通常对FILE结构体的访问是通过FILE类型指针变量(简称:文件指针)完成,文件指针变量指向文件类型变量,简单地说,文件指针指向文件。
事实上只需要使用文件指针完成文件的操作,根本不必关心文件类型变量的内容。在打开一个文件后,系统开辟一个文件变量并返回此文件的文件指针;将此文件指针保存在一个文件指针变量中,以后所有对文件的操作都通过此文件指针变量完成;直到关闭文件,文件指针指向的文件类型变量释放。 例如:
定义一个指向文件的指针变量fp。 */ fp=fopen(“mydata.txt”,...); /* 打开文件时,系统开辟一个文件变量,并返回文件 指针,将此指针赋值(保存)给文件指针变量fp */ ......(文件操作函数,会引用文件指针fp) fclose(fp); /* 关闭文件,释放文件指针fp指向的文件变量 */
11.3 文件的打开与关闭
对文件的操作的步骤:先打开,后读写,最后关闭。
文件的打开(fopen函数)
1、文件的打开后才能进行操作,文件打开通过调用fopen函数实现。
调用fopen的格式是:
注意:一定将函数返回的文件指针赋值给“文件指针变量”。 例如: FILE *fp;
fp=fopen(“d:\\\\a1.txt”,“r”); 说明:
(1)打开d:盘根目录下文件名为a1.txt的文件,打开方式“r”表示只读。
FFILE *fp; 3 C语言程序设计 授课教案
(2)fopen函数返回指向d:\\a1.txt的文件指针,然后赋值给fp,fp->此文件,即fp与此文
件关联。
(3)关于文件名要注意:文件名包含文件名.扩展名;路径要用“\\\\”表示。
(4)关于打开方式,可以参看p204,表12-1,p205,表12-2。简单地看,文件打开方式包含
下面几类表示打开方式的关键词,不同类的可以组合。 ? ? ?
2、文件打开方式(使用方式)的说明
(1)文件打开一定要检查fopen函数的返回值。因为有可能文件不能正常打开。不能正常打
开时fopen函数返回NULL。 可以用下面的形式检查:
if((fp=fopen(...))==NULL){ printf(“error open file\\n”); exit(1); }
(2)“r”方式:只能从文件读入数据而不能向文件写入数据。该方式要求欲打开的文件已经
存在。
(3)“w”方式:只能向文件写入数据而不能从文件读入数据。如果文件不存在,创建文件,
如果文件存在,原来文件被删除,然后重新创建文件(相当覆盖原来文件)。
(4)“a”方式:在文件末尾添加数据,而不删除原来文件。该方式要求欲打开的文件已经存
在。
(5)“+”(“r+,w+,a+”):均为可读、可写。但是“r+”,“a+”要求文件已经存在,
“w+”无此要求;“r+”打开文件时文件指针指向文件开头,“a+”打开文件时文件指针指向文件末尾。
(6)“b、t”:以二进制或文本方式打开文件。默认是文本方式,t可以省略。读文本文件
时,将“回车”/“换行”转换为一个“换行”;写文本文件时,将“换行”转换为“回车/换行”。
(7)程序开始运行时,系统自动打开三个标准文件:标准输入,标准输出,标准出错输出。
一般这三个文件对应于终端(键盘、显示器)。这三个文件不需要手工打开,就可以使用。标准文件:标准输入,标准输出,标准出错输出对应的文件指针是stdin,stdout,stderr。
“r,w,a”:读、写、添加
“b,t”:二进制,文本文件。默认为文本方式,即没有b就是以文本方式打开文件。 “+”:可读写
4 C语言程序设计 授课教案
文件的关闭(fclose函数)
文件使用完毕后必须关闭,以避免数据丢失。 格式:fclose(文件指针);
11.4 文件的读写操作
常用的文件读写函数: 1、字符读写函数:fgetc,fputc 2、字符串读写函数:fgets,fputs 3、格式化读写函数:fscanf,fprintf 4、数据块读写函数:fread,fwrite 说明:
1、这些函数都以f(file)开头。
2、这些函数都要使用打开文件时获得的文件指针。 3、前三类函数与标准I/O函数使用基本相同。
4、一般,对于文本文件使用“顺序访问”方式操作,对于二进制文件使用“随机访问”方式
操作。
11.4.1 字符读写函数 1、写一个字符到磁盘文件: 格式:fputc(ch,fp)
功能:将字符ch(可以是字符表达式,字符常量、变量等)写入fp所指向的文件。 返回:输出成功返回值-输出的字符ch;输出失败-返回EOF(-1)。 其它说明:每次写入一个字符,文件位置指针自动指向下一个字节。
例:从键盘输入一行字符,写入到文本文件string.txt中。(P.206)
一般用二进制方式打开文件 一般用文本方式打开文件 5
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C语言-桂林理工大学11-第十一章 文件操作在线全文阅读。
相关推荐: