C语言程序设计第四版PPT 谭浩强
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
顺序文件的读写——读写字符串
函数形式 功能 返回值
从 fp 指 向 的 文 件 , 成功:返回地址 读 入 长 度 为 (n-1) str; fgets(str,n,fp) 的字符串,存放 失 败 : 返 回 NULL 到字符数组str str所指向的字符 成功:返回0; 串 写 到 文 件 指 针 失败:返回非0 fputs(str,fp) 变 量 fp 所 指 向 的 值 文件
函数形式 功能 返回值
成功:返回所读字符; 失败:返回EOF 成功:返回输出的字 符; 失败:返回EOF
从fp指向的文 fgetc(fp) 件读入一个字 符 fputc(ch,fp) 把字符ch写到 fp所指向的文 件
顺序文件的读写——读写字符
例10.1 连续读入一串字符并写入文件 例10.2 将一个文件内容复制到另一文件 考虑:如何实现文件的合并?
第10章 文件
本章内容
10.1 文件的基本知识 10.2 打开与关闭文件 10.3 顺序读写数据文件 10.4 随机读写数据文件 10.5 文件读写的出错检测
文件的基本知识——输入输出
之前各章中处理的数据
输入:键盘->内存
输出:内存->显示器
实际上也可能是
输入:外部设备->内存(读文件)
输出:内存->外部设备(写文件)
10000
文件的基本知识——文件缓冲区
从内存向外存输出数据
输出文件缓冲区
程序数据区
装满缓冲区
输入文件缓冲区
磁盘
文件的基本知识——文件缓冲区
从外存向内存读入数据
输出文件缓冲区
程序数据区 输入文件缓冲区
磁盘
充满缓冲区
文件的基本知识——文件指针
被使用的文件在内存中开辟一个相应的
文件信息区,存放文件的信息(如文件名、 状态及当前位置等) 这些信息保存在一个结构体变量中。该 结构体类型由系统声明,名为FILE 声明FILE结构体类型的信息包含在头文 件“stdio.h”中 一般设置一个指向FILE类型变量的指针 变量,通过它引用FILE类型变量
文件的关闭
功能:撤销文件信息区和文件缓冲区 函数:fclose(文件指针); 例: fclose (fp);
读写文件后不关闭,可能会丢失数据。
文件的读写方式
顺序读写:读写顺序与数据的物理顺序 一致(P.338) 随机读写:可以对文件中指定位置的数
据进行读写(P.349)
顺序文件的读写——读写字符
文件的基本知识——流式文件 C语言把文件看作是字符(或字 节)的序列。 文件以“流”的形式在程序与操
作系统间流动。
文件的基本知识——数据的形式
根据数据的组织形式,数据文件可分为
ASCII文件:数据逐个字符的ASCII码
输出到外存,也称文本文件
二进制文件:内存中二进制形式的数据
直接输出到外存
文件的基本知识——数据的形式
文件的打开
打开文件时,通常指定一个指针变量 指向该文件,通过该指针变量对文件进 行读写。
例:FILE *fp;
fp=fopen("a1.dat","r");
三个要点:文件名;读写方式;指针
文件的打开——打开文件的方式
P.336-337表10.1 r:读 w:写(重写,覆盖原数据) a:写(追加) b:二进制文件 若文件不存在: "读"和"追加":出错(P.336例,排错) "重写":建立新文件
顺序文件的读写——读写字符串
例10.3 从键盘输入3个字符串,排序,把排 序后的字符串写入文件(P.342-343) 读上面写好的文件(P.344)
顺序文件的读写——格式化读写
fprintf(文件指针,格式字符串,输出表列); fscanf (文件指针,格式字符串,输入表列);
例:
fprintf (fp,"%d,%6.2f",i,f);
例10.4 从键盘输入10个学生的数据(4个数 据项),存放在结构体数组中,再将数 据写入文件(P.346-347)
读上面写好的文件(P.347-348)
从另一个已有的文件里读数据(P.349)
操作系统把各种设备都统一作为文件处理
文件的基本知识——文件分类
文件:存放在存储介质(磁盘、光盘、半
导体存储器)上的相关信息集合
程序设计中主要用到两种文件:
程序文件 数据文件
本章讨论的是数据文件
文件的基本知识——文件标识
文件有唯一的文件标识,以便识别和引用 文件标识包括三部分:
文件路径:文件保存的位置 文件名主干:命名应体现文件的内容 文件后缀:体现文件的格式,参见“常 用文件扩展名”
字符:一律以ASCII形式存储 数值:既可用ASCII形式存储,也可以
用二进制形式存储。例:(10000)10
ASCII形式
00110001 00110000 00110000 00110000 00110000
1
00000000
0
0 二进制形式
00100111
0
00010000
0
00000000
文件的基本知识——文件指针
FILE
fp1
*fp1,*fp2,*fp3;
fp2 fp3
文件f1的 文件信息区
文件f2的 文件信息区
文件f3的 文件信息区
文件的基本知识——文件的操作
写文件:打开-写-关闭
读文件:打开-读-关闭
文件的打开
功能:为文件建立相应的信息区(存放 文件信息)和文件缓冲区(暂时存放输入 输出的数据) 函数: fopen(文件名,使用文件方式); 例: fopen("a1.dat","r");
fscanf (fp,"%d,%f",&i,&f); ——很少用
顺序文件的读写——二进制读写
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
读/写 数据 的首 地址 读/写 的字 节数 读/写 的数 据项 数 文 件 指 针
顺序文件的读写—Βιβλιοθήκη Baidu二进制读写