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

  • 格式:pptx
  • 大小:4.25 MB
  • 文档页数:61

下载文档原格式

  / 50
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法设计: (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.1 文本文件的读写
传统流程图:
10.2 文件的读写
10.2.1 文本文件的读写
2.读字符函数 int fgetc(FILE *fp) fgetc()函数的一般形式如下: ch = fgetc( fp ); 功能: 从文件指针fp所指文件中读取一个字符。
10.2 文件的读写
10.2 文件的读写
10.2.1 文本文件的读写
3.写字符串函数 int fputs(char *string,FILE *fp) fputs()函数的一般形式如下:
ch = fputs(str,fp); 功能:将一个字符串写到文件指针所指的文件中。
10.2 文件的读写
10.2.1 文本文件的读写
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.文件类型 (1)按文件的逻辑结构
记录文件:由具有一定结构的记录组成(定长和不定长)。 流式文件:由一个个字符(字节)数据顺序组成。 (2)按存储介质: 普通文件:存储介质文件(磁盘、磁带等) 设备文件:非存储介质(键盘、显示器、打印机等)
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.1 文件的概念及文件类型
5.文件的定义
struct_iobuf
{ char *_ptr;
/*文件输入的下一个位置*/
int _cnt;
/*当前缓冲区的相对位置*/
char *_base;
/*数据缓冲区的位置*/
int _flag;
/*文件状态标志*/
int _file;
10 文件
10
第10章 文件
通过本章的学习掌握磁盘文件中数据载入 方法和信息保存方法,能够对学生成绩管 理系统进一步完善。
第1章 C语言程序设计基础
知识目标
理解文件的概念 掌握文件的基本操作 掌握文本文件和二进制文件的读写 方法 掌握文件的定位方法
技能目标
学会使用文件进行数据的存储及处 理 能够用文件完善学生成绩管理系统
10.2.1 文本文件的读写
【例10-2】打开例10.1生成的文件myInfo.txt,将其中的内容显示 在屏幕上,要求文件名从命令行参数输入。 问题分析: 需要首先打开文件myInfo.txt,再使用读字符函数对该文件进行读 操作,最后关闭文件。
10.2 文件的读写
10.2.1 文本文件的读写
问题分析: (1)定义文件指针fp。 (2)定义字符变量用来存放从文件中读取的字符。 (3)以读文本文件方式打开文件(文件名由命令行参数输入)。 (4)如果打开文件失败,则输出错误信息并结束程序。 (5)读取文件中的内容并显示在屏幕上。 (6)关闭文件。
10.2 文件的读写
10.2.1 文本文件的读写
1. 写字符函数 int fputc(char c, FILE *fp) fputc()函数的一般形式如下:
ch = fputc( ch,fp); 功能:将字符型变量ch的内容写入文件指针fp所指定的文件中。 返回值:若成功,则返回写的字符ch;若出错,返回为EOF(-1)。
案例10 用文件完善学生成绩管理系统
问题分析
案例9中的数据是存储在内存中的,当程序结束运行时, 这些数据全部消失。如果能将数据保存在文件中,将大 大减少输入工作量,而且输出的结果也可以长期保留。 问题的要点是: (1) 如何将内存中的数据存储在文件中。 (2) 反之,如何从磁盘文件中的数据载入内存。
/*用于有效性检验*/
int _charbuf;
/*如无缓冲区不读取字符*/
int _bufsiz;
/*缓冲区的大小*/
char *_tmpfname;
/*临时文件名*/
};
typedef struct_iobuf FILE;
10.1 文件的基本概念
10.1.1 文件的概念及文件类型
5.文件的定义 C语言对文件的操作并不是直接通过文件名进行的,而是根据文件名生成 一个指向FILE结构类型的指针。也就是首先定义一个FILE的指针,例如:
10.2 文件的读写
10.2.2 二进制文件的读写
【例10-5】编一程序从键盘输入5个整数并写入到文件test.dat 中。 问题分析: 需要首先定义文件指针变量,再打开文件test.dat,然后使用写 数据块函数fwrite() 对该文件进行写操作,最后关闭文件。
10.2 文件的读写
10.2.2 二进制文件的读写
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也是文件结束的标志。
i++;
}
改为: fputs(chInfo,fp);
10.2 文件的读写
10.2.1 文本文件的读写
4.读字符串函数 char *fgets(char *string,int n,FILE *fp) fgets()函数的一般形式如下:
fgets(str,n,fp); 功能:从文件指针fp所指的文件中读取一个字符串。
FILE *fp; 通过fp使用结构体变量中的文件信息访问文件。也就是说,C程序中是通 过文件指针变量fp找到与它相关的文件的,通过该指针对文件进行操作。
10.1 文件的基本概念
10.1.2 文件的打开和关闭
1. 文件的打开 C语言中,使用fopen()函数来打开文件。 格式:FILE *fp;
fp = fopen("文件名","操作方式"); 功能:以指定的操作方式打开一个文件。若文件正常打开,返回 指向文件结构体的指针;否则打开失败,返回 NULL。
10.1 文件的基本概念
10.1.1 文件的概念及文件类型
1.文件的概念 文件是指存储在外部介质上的数据集合,为标识一个文件,每个文件
都必须有一个文件名,文件名的一般形式为:文件名.[扩展名],其中扩展 名是可选的,并按类别命名,例如,C语言源程序的扩展名是C,而可执 行文件的扩展名是EXE,等等。
【例10-3】用fputs函数实现应如何修改程序?请根据提示写出完
整程序。
该程序的解题思路和传统流程图与例10-1相近,请参考前面内容。
只需对代码做部分修改,需要修改的地方主要有:
(1)删除语句int i;
(2)可将语句
i=0;
while(chInfo[i]!='\0'){
fputc(chInfo[i],fp);
C语言程序设计
机械工业出版社
00 开篇案例
目录
CONTENTS
01 C语言程序设计基础 02 基本数据及其运算
03 顺序结构程序设计及其应用
04 选择结构程序设计及其应用
目录
CONTENTS
05 循环结构程序设计及其应用 06 数组
07 函数
目录
CONTENTS
08 结构体、共用体和枚举类型 09 指针
10.1.1 文件的概念及文件类型
3.文件的用途 (1)使程序与数据分离,数据文件的改动不会引起程序的改动。 (2)使数据共享,不同程序可以访问同一数据文件中的数据。 (3)程序运行的中间数据或者结果数据可以长期保存。
10.1 文件的基本概念
10.1.1 文件的概念及文件类型
4.文件的处理方式 (1) 缓冲文件系统:又称为标准文件系统或高级文件系统,是目前常用的
案例10 用文件完善学生成绩管理系统
知识准备
要完成上面的任务,必须了解文件的基本概念,熟练掌握文件读 写函数。 所谓文件,一般指存储在计算机外部介质上的一组相关数据的集 合。在现代计算机的应用领域中,数据处理是个重要方面,要实 现数据处理往往是要通过文件的形式来完成。本章介绍如何将数 据写入文件和从文件中读出。
目录
CONTENTS
00 案例10 用文件完善学生成绩管理系统 01 文件的基本概念 02 文件的读写
目录
CONTENTS
03 学生成绩管理系统的数据存取 04 小结 05 拓展案例
案例10 用文件完善学生成绩管理系统
问题描述
在学生成绩管理系统中,所涉及的数据是比较大的,而 每次运行程序时都要通过键盘输入数据,非常麻烦。程 序退出数据也消失,数据只能保存在内存中,不能长期 保存。 本任务使用外部存储文件来保存数据,实现对数据的存 储和读取,能安全有效地长期保存数据,还能提供数据 共享。
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)
文件系统,也是ANSI C建议使用的文件系统。系统自动为正在使用的 文件开辟内存缓冲区。可减少主机和外部设备频繁交换数据的次数 (2) 非缓冲文件系统又称为低级文件系统,它提供的文件输入输出操作函 数更接近于操作系统,它不能自动设置缓冲区,而是由用户根据所处 理的数据大小在程序中设置。
10.1 文件的基本概念
10.2 文件的读写
10.2.1 文本文件的读写
【例10-1】编一程序从键盘输入一串字符“may friendship forever! ”,然后保存在文件myInfo.txt中。 问题分析: 需要首先打开文件myInfo.txt,再使用写字符函数对该文件进行写 操作,最后关闭文件。
10.2 文件的读写
10.1 文件的基本概念
10.1.1 文件的概念及文件类型
2.文件类型 (3)按数据的组织形式:
文本文件:也称ASCII码文件。这种文件在保存时,每个字符对应 一个字节,用于存储对应的ASCII码。
二进制文件:不是保存ASCII码,而是按二进制的编码方式来保存 文件内容。
10.1 文件的基本概念
10.1.1 文件的概念及文件类型
5.文件的定义 一般情况下,要使用一个文件,系统将在内存中为这一文件开辟一个“文 件信息区”,用来存放文件的有关信息,如文件当前的读写位置、缓冲区 中未被处理的字符数、文件操作方式、下一个字符的位置、文件缓冲区 的位置等。这些信息保存在一个结构体中,该结构体由系统定义的,定 义在stdio.h的头文件中。Visual C++6.0系统中具体定义形式为:
10.2.1 文本文件的读写
算法设计: (1)定义文件指针fp。 (2)定义字符数组chInfo用来存放输入的字符串。 (3)以写文本文件方式打开文件myInfo.txt。 (4)若文件打开操作失败,则输出错误信息并结束程序;否则, 打开文件成功,则从键盘输入数据。 (5)将字符数组chInfo中的字符写入文件myInfo.txt。 (6)关闭文件。