C语言-学习课件-第12讲.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C语言-学习课件-第12讲.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学习 课件 12
- 资源描述:
-
1、Chap 12 文件文件12.1 将短句将短句“Hello World”写入到文件写入到文件 12.2 读取学生成绩文件读取学生成绩文件 12.3 文件复制文件复制 12.4 文件综合应用:个人小金库的管理文件综合应用:个人小金库的管理 本章要点本章要点n什么是文件?什么是文件?C文件是如何存储的?文件是如何存储的?n什么是文本文件和二进制文件?什么是文本文件和二进制文件?n怎样打开、关闭文件?怎样打开、关闭文件?n怎样编写文件读写程序?怎样编写文件读写程序?n怎样编写程序,实现简单的数据处理?怎样编写程序,实现简单的数据处理?12.1 将短句将短句“Hello World”写入到文件写入到文
2、件例例12-1 把短句把短句 “Hello World!” 保存到磁盘文保存到磁盘文件件f1.txt中。中。#include #include int main(void) FILE *fp; /* 定义文件指针定义文件指针*/ if( ( fp = fopen(f1.txt, w) ) = NULL)/* 打开文件打开文件 */ printf(File open error!n); exit(0); fprintf( fp, %s, Hello World! ); /* 写文件写文件 */ if( fclose( fp ) ) /* 关闭文件关闭文件 */ printf( Can not c
3、lose the file!n ); exit(0); return 0;例例12-1 源程序源程序12.1.2 文件的概念文件的概念n文件:保存在外存储器上的一组数据的有序文件:保存在外存储器上的一组数据的有序集合集合n特点特点: 数据数据长久保存长久保存 数据数据长度不定长度不定 数据按数据按顺序存取顺序存取12.1.3 文本文件和二进制文件文本文件和二进制文件 语言中的文件是数据流语言中的文件是数据流文件的两种数据形式:文件的两种数据形式: ASCII码码 (文本文件(文本文件 text stream)字符流字符流 二进制码二进制码(二进制文件(二进制文件 binary stream)
4、二进制文件是直接把内存数据以二进制形式保存。二进制文件是直接把内存数据以二进制形式保存。例如,整数例如,整数1234文本文件保存:文本文件保存:49 50 51 52 (4个字符)个字符)二进制文件保存:二进制文件保存: 04D2 (1234的二进制数)的二进制数)字节字节 . . . . . . . .字节字节字节字节字节字节字节字节字节字节12.1.4 缓冲文件系统缓冲文件系统 内存单元内存单元 内存单元内存单元数据数据 缓冲器缓冲器512字节字节文件文件由操作由操作系统自系统自动完成动完成程序控制程序控制由于磁盘速度慢由于磁盘速度慢直接把数据写到磁盘效率很低直接把数据写到磁盘效率很低12
5、.1.4 缓冲文件系统缓冲文件系统向磁盘输出数据:数据向磁盘输出数据:数据 缓冲区,装满缓冲区,装满缓冲区后缓冲区后 磁盘文件。磁盘文件。从磁盘读入数据:先从磁盘读入数据:先一次性一次性从磁盘文件将从磁盘文件将一批一批数据输入数据输入到缓冲区,然后再从缓冲区到缓冲区,然后再从缓冲区逐个逐个读入读入数据到变量数据到变量。 数据数据 缓冲器缓冲器512字节字节文件文件由操作由操作系统自系统自动完成动完成程序控制程序控制文件名文件名 内存单元内存单元 内存单元内存单元用什么标识用什么标识缓冲文件与文件类型指针缓冲文件与文件类型指针用文件指针指示文件缓冲区中具体读写的位置用文件指针指示文件缓冲区中具体
6、读写的位置FILE *fp;数据数据缓冲器缓冲器512字节字节文件文件由操作由操作系统自系统自动完成动完成程序控制程序控制fp同时使用多个文件时,每个文件都有缓冲区,用同时使用多个文件时,每个文件都有缓冲区,用不同的文件指针分别指示。不同的文件指针分别指示。12.1.5 文件结构与文件类型指针文件结构与文件类型指针1. 自定义类型(自定义类型(typedef):):将将C语言中的已有类型(包括已定义过的自定语言中的已有类型(包括已定义过的自定义类型)重新命名义类型)重新命名新的名称可以代替已有数据类型新的名称可以代替已有数据类型常用于简化对复杂数据类型定义的描述常用于简化对复杂数据类型定义的描
7、述typedef ;自定义类型(自定义类型(typedef)typedef ; int i, j; INTEGER i, j; ; int* p1; POINT p1; 自定义类型(自定义类型(typedef)的使用方法)的使用方法定义变量定义变量 int i变量名变量名新类型名新类型名 int INTEGER加上加上 typedef typedef int INTEGER用新类型名定义变量用新类型名定义变量 INTEGER i;int num10int NUM10typedef int NUM10NUM a int a10typedef struct short level; /* 缓冲区使
8、用量缓冲区使用量 */ unsigned flags; /* 文件状态标志文件状态标志 */ char fd; /* 文件描述符文件描述符 */ short bsize; /* 缓冲区大小缓冲区大小 */ unsigned char *buffer; /* 文件缓冲区的首地址文件缓冲区的首地址 */ unsigned char *curp; /* 指向文件缓冲区的工作指针指向文件缓冲区的工作指针 */ unsigned char hold; /* 其他信息其他信息 */ unsigned istemp; short token; FILE;2. 文件结构文件结构FILE3. 文件类型指针文件类
9、型指针FILE * fp指向文件缓冲区,通过移动指针实现对文件的操作指向文件缓冲区,通过移动指针实现对文件的操作数据数据缓冲器缓冲器512字节字节文件文件由操作由操作系统自系统自动完成动完成程序控制程序控制fp同时使用多个文件时,每个文件都有缓冲区,用同时使用多个文件时,每个文件都有缓冲区,用不同的文件指针分别指示。不同的文件指针分别指示。如何使如何使fp与具体与具体文件文件挂钩挂钩? ?12.2 读取学生成绩文件读取学生成绩文件例例12-2 已知一个数据文件已知一个数据文件f.txt中保存了中保存了5个学生的计算机等个学生的计算机等级考试成绩,包括学号、姓名和分数,文件内容如下级考试成绩,包
10、括学号、姓名和分数,文件内容如下,请请将文件的内容读出并显示到屏幕中。将文件的内容读出并显示到屏幕中。 301101 张文张文 91301102 陈慧陈慧 85301103 王卫东王卫东76301104 郑伟郑伟 69301105 郭温涛郭温涛 5512.2.1 程序解析程序解析#include stdio.hint main(void) FILE * fp; /* 定义文件指针定义文件指针*/ long num; char stname20; int score; if(fp = fopen(f.txt, r) = NULL) /* 打开文件打开文件 */ printf(File open
11、error!n); exit(0); while( !feof(fp) ) fscanf(fp, %ld%s%d, &num, stname, &score); printf(%ld%s %dn, num, stname, score); ; if( fclose(fp) ) /* 关闭文件关闭文件 */ printf( Can not close the file!n ); exit(0); 12.2.2 打开文件打开文件if(fp = fopen(f.txt, r) = NULL)printf(File open error!n);exit(0);fopen(文件名文件名,文件打开方式文件
12、打开方式)使文件指针与相应文件实体对应起来使文件指针与相应文件实体对应起来程序对文件指针进行操作,即程序对文件指针进行操作,即fp代表磁盘文件代表磁盘文件n函数函数fopen() 的返回值的返回值执行成功,则返回包含文件缓冲区等信息的执行成功,则返回包含文件缓冲区等信息的FILE型型地址地址,赋给文件指针赋给文件指针fp不成功,则返回一个不成功,则返回一个NULL(空值)(空值)exit(0):关闭所有打开的文件,并终止程序的执行关闭所有打开的文件,并终止程序的执行参数参数0表示程序正常结束;非表示程序正常结束;非0参数通常表示不正常的程序结束参数通常表示不正常的程序结束文件打开方式文件打开方
13、式fp = fopen(f.txt, r)n文件打开方式参数表文件打开方式参数表文件读写与文件读写与打开方式打开方式if 读文件读文件 指定的文件必须存在,否则出错;指定的文件必须存在,否则出错;if 写文件写文件(指定的文件可以存在,也可以不存在指定的文件可以存在,也可以不存在) if 以以 w 方式写方式写 if 该文件已经存在该文件已经存在 原文件将被删去重新建立;原文件将被删去重新建立; else 按指定的名字新建一个文件;按指定的名字新建一个文件; else if 以以 a 方式写方式写 if 该文件已经存在该文件已经存在 写入的数据将被添加到指定文件原有数据的后面,不会删去原来的内
14、容;写入的数据将被添加到指定文件原有数据的后面,不会删去原来的内容; else 按指定的名字新建一个文件(与按指定的名字新建一个文件(与“w”相同);相同);if 文件同时读和写文件同时读和写 使用使用 r+、w+ 或或 a+ 打开文件打开文件 12.2.3 关闭文件关闭文件if( fclose(fp) ) printf( Can not close the file!n );exit(0);fclose(文件指针文件指针)把缓冲区中的数据写入磁盘扇区,确保写文件的正常完成把缓冲区中的数据写入磁盘扇区,确保写文件的正常完成释放文件缓冲区单元和释放文件缓冲区单元和FILE结构体,使文件指针与具体
15、文结构体,使文件指针与具体文件脱钩。件脱钩。函数函数fclose() 的返回值的返回值返回返回0:正常关闭文件:正常关闭文件返回非返回非0:无法正常关闭文件:无法正常关闭文件12.3 文件复制文件复制例例12-3 已知一个文本数据文件已知一个文本数据文件f1.txt,请将,请将该文件复制一份,保存为该文件复制一份,保存为f2.txt。新建一个文本文件新建一个文本文件f1.txt,将该文件与源程序放在,将该文件与源程序放在同一目录下,执行程序,观察结果。同一目录下,执行程序,观察结果。例例12-3 源程序源程序#include int main(void) FILE *fp1,*fp2; cha
16、r c; if( fp1 = fopen( f1.dat, r ) = NULL) printf( File open error!n ); exit(0); if( fp2 = fopen( f2.dat, w ) = NULL) printf( File open error!n ); exit(0); while( !feof( fp1 ) ) c = fgetc( fp1 ); fputc(c, fp2); fclose( fp1 ); fclose( fp2 ); return 0;打开多个文件打开多个文件if(fp1 = fopen(f1.dat, r) = NULL) print
展开阅读全文