当前位置:文档之家› C语言程序设计课件第10章

C语言程序设计课件第10章


10 文件
10
第10章 文件
通过本章的学习掌握磁盘文件中数据载入 方法和信息保存方法,能够对学生成绩管 理系统进一步完善。
第1章 C语言程序设计基础
知识目标
理解文件的概念 掌握文件的基本操作 掌握文本文件和二进制文件的读写 方法 掌握文件的定位方法
技能目标
学会使用文件进行数据的存储及处 理 能够用文件完善学生成绩管理系统
10.2 文件的读写
10.2.1 文本文件的读写
C语言提供以字符方式读写文件的函数有: • 写字符函数 int fputc(char ch, FILE *fp) • 读字符函数 int fgetc(FILE *fp) • 写字符串函数int fputs(char *string,FILE *fp) • 读字符串函数char *fgets(char *string,int n,FILE *fp)
10.1 文件的基本概念
10.1.1 文件的概念及文件类型
2.文件类型 (1)按文件的逻辑结构
记录文件:由具有一定结构的记录组成(定长和不定长)。 流式文件:由一个个字符(字节)数据顺序组成。 (2)按存储介质: 普通文件:存储介质文件(磁盘、磁带等) 设备文件:非存储介质(键盘、显示器、打印机等)
10.1.1 文件的概念及文件类型
5.文件的定义 一般情况下,要使用一个文件,系统将在内存中为这一文件开辟一个“文 件信息区”,用来存放文件的有关信息,如文件当前的读写位置、缓冲区 中未被处理的字符数、文件操作方式、下一个字符的位置、文件缓冲区 的位置等。这些信息保存在一个结构体中,该结构体由系统定义的,定 义在stdio.h的头文件中。Visual C++6.0系统中具体定义形式为:
/*用于有效性检验*/
int _charbuf;
/*如无缓冲区不读取字符*/
int _bufsiz;
/*缓冲区的大小*/
char *_tmpfname;
/*临时文件名*/
};
typedef struct_iobuf FILE;
10.1 文件的基本概念
10.1.1 文件的概念及文件类型
5.文件的定义 C语言对文件的操作并不是直接通过文件名进行的,而是根据文件名生成 一个指向FILE结构类型的指针。也就是首先定义一个FILE的指针,例如:
10.2 文件的读写
10.2.1 文本文件的读写
【例10-4】 用fgets函数实现例10-2应如何修改程序?请根据提示
写出完整程序。 该程序的解题思路和传统流程图与例10-2相近,请参考前面内容。 只需对代码做部分修改,需要修改的地方主要有: (1)语句char ch; 改为char *chInfo; (2)语句ch=fgetc(fp);
10.1 文件的基本概念
10.1.1 文件的概念及文件类型
2.文件类型 (3)按数据的组织形式:
文本文件:也称ASCII码文件。这种文件在保存时,每个字符对应 一个字节,用于存储对应的ASCII码。
二进制文件:不是保存ASCII码,而是按二进制的编码方式来保存 文件内容。
10.1 文件的基本概念
10.1 文件的基本概念
10.1.1 文件的概念及文件类型
1.文件的概念 文件是指存储在外部介质上的数据集合,为标识一个文件,每个文件
都必须有一个文件名,文件名的一般形式为:文件名.[扩展名],其中扩展 名是可选的,并按类别命名,例如,C语言源程序的扩展名是C,而可执 行文件的扩展名是EXE,等等。
FILE *fp; 通过fp使用结构体变量中的文件信息访问文件。也就是说,C程序中是通 过文件指针变量fp找到与它相关的文件的,通过该指针对文件进行操作。
10.1 文件的基本概念
10.1.2 文件的打开和关闭
1. 文件的打开 C语言中,使用fopen()函数来打开文件。 格式:FILE *fp;
fp = fopen("文件名","操作方式"); 功能:以指定的操作方式打开一个文件。若文件正常打开,返回 指向文件结构体的指针;否则打开失败,返回 NULL。
10.2.1 文本文件的读写
【例10-2】打开例10.1生成的文件myInfo.txt,将其中的内容显示 在屏幕上,要求文件名从命令行参数输入。 问题分析: 需要首先打开文件myInfo.txt,再使用读字符函数对该文件进行读 操作,最后关闭文件。
10.2 文件的读写
10.2.1 文本文件的读写
问题分析: (1)定义文件指针fp。 (2)定义字符变量用来存放从文件中读取的字符。 (3)以读文本文件方式打开文件(文件名由命令行参数输入)。 (4)如果打开文件失败,则输出错误信息并结束程序。 (5)读取文件中的内容并显示在屏幕上。 (6)关闭文件。
while(ch!=EOF) {
putchar(ch); ch=fgetc(fp); } 改为:fgets(chInfo,100,fp); printf("%s",chInfo);
10.2 文件的读写
10.2.2 二进制文件的读写
1.写数据块函数 fwrite()函数的一般形式如下: fwrite(buffer,size,count,fp); 功能:将一组数据输出到指定的磁盘文件中。
10.1 文件的基本概念
10.1.2 文件的打开和关闭
2. 文件的关闭 使用完一个文件后,应使用fclose()函数及时关闭。fclose()函数和 fopen()函数一样,原型也在stdio.h中,调用的一般形式为: fclose(文件指针); 例如: fclose(fp); fclose函数也带回一个值,当正常完成关闭文件时,fclose函数返 回值为0(NULL),否则返回-1(EOF),EOF是stdio.h中定义的 符号常量,值为-1。EOF也是文件结束的标志。
10.1 文件的基本概念
10.1.1 文件的概念及文件类型
5.文件的定义
struct_iobuf
{ char *_ptr;
/*文件输入的下一个位置*/
int _cnt;
/*当前缓冲区的相对位置*/
char *_base;
/*数据缓冲区的位置*/
int _flag;
/*文件状态标志*/
int _file;
10.2.1 文本文件的读写
算法设计: (1)定义文件指针fp。 (2)定义字符数组chInfo用来存放输入的字符串。 (3)以写文本文件方式打开文件myInfo.txt。 (4)若文件打开操作失败,则输出错误信息并结束程序;否则, 打开文件成功,则从键盘输入数据。 (5)将字符数组chInfo中的字符写入文件myInfo.txt。 (6)关闭文件。
i++;
}
改为: fputs(chInfo,fp);
10.2 文件的读写
10.2.1 文本文件的读写
4.读字符串函数 char *fgets(char *string,int n,FILE *fp) fgets()函数的一般形式如下:
fgets(str,n,fp); 功能:从文件指针fp所指的文件中读取一个字符串。
算法设计: (1)定义整型数组iArray存储5个整数。 (2)定义整型变量i为循环控制变量。 (3)定义文件指针fp。 (4)以写二进制文件方式打开文件test.dat。
10.2 文件的读写
10.2.2 二进制文件的读写
算法设计: (5)如果打开文件失败,则输出错误信息并结束程序。 (6)从键盘输入5个整数并存入数组iArray中。 (7)将数组iArray的元素写入文件。 (8)关闭文件。
10.2 文件的读写
10.2.2 二进制文件的读写
【例10-5】编一程序从键盘输入5个整数并写入到文件test.dat 中。 问题分析: 需要首先定义文件指针变量,再打开文件test.dat,然后使用写 数据块函数fwrite() 对该文件进行写操作,最后关闭文件。
10.2 文件的读写
10.2.2 二进制文件的读写
10.2 文件的读写
10.2.1 文本文件的读写
1. 写字符函数 int fputc(char c, FILE *fp) fputc()函数的一般形式如下:
ch = fputc( ch,fp); 功能:将字符型变量ch的内容写入文件指针fp所指定的文件中。 返回值:若成功,则返回写的字符ch;若出错,返回为EOF(-1)。
10.2 文件的读写
10.2.1 文本文件的读写
3.写字符串函数 int fputs(char *string,FILE *fp) fputs()函数的一般形式如下:
ch = fputs(str,fp); 功能:将一个字符串写到文件指针所指的文件中。
10.2 文件的读写
10.2.1 文本文件的读写
10.1.1 文件的概念及文件类型
3.文件的用途 (1)使程序与数据分离,数据文件的改动不会引起程序的改动。 (2)使数据共享,不同程序可以访问同一数据文件中的数据。 (3)程序运行的中间数据或者结果数据可以长期保存。
10.1 文件的基本概念
10.1.1 文件的概念及文件类型
4.文件的处理方式 (1) 缓冲文件系统:又称为标准文件系统或高级文件系统,是目前常用的
10.2 文件的读写
10.2.1 文本文件的读写
传统流程图:
10.2 文件的读写
10.2.1 文本文件的读写
2.读字符函数 int fgetc(FILE *fp) fgetc()函数的一般形式如下: ch = fgetc( fp ); 功能: 从文件指针fp所指文件中读取一个字符。
10.2 文件的读写
C语言程序设计
机械工业出版社
00 开篇案例
目录
CONTENTS
01 C语言程序设计基础 02 基本数据及其运算
相关主题