C语言程序设计课程第11章文件课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C语言程序设计课程第11章文件课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 课程 11 文件 课件
- 资源描述:
-
1、使用数据文件的目的使用数据文件的目的1、数据文件的改动不引起程序的改动、数据文件的改动不引起程序的改动程序与数据分离程序与数据分离2、不同程序可以访问同一数据文件中的数据、不同程序可以访问同一数据文件中的数据数据共享数据共享3、能、能长期保存长期保存程序运行的中间数据或结果数据程序运行的中间数据或结果数据机等)按数据的组织形式:文本文件:ASCII文件,每个字节存放一个字符的ASCII码二进制文件:数据按其在内存中的存储形式原样存放如如 int型数型数100000010011100010000内存存储形式内存存储形式0010011100010000二进制形式二进制形式0011000100110
2、000001100000011000000110000ASCII形式形式文本文件特点文本文件特点:存储量大、速度慢、便于对字符操作存储量大、速度慢、便于对字符操作二进制文件特点二进制文件特点:存储量小、速度快、便于存放中间结果存储量小、速度快、便于存放中间结果磁盘文件磁盘文件输出文件缓冲区输出文件缓冲区输入文件缓冲区输入文件缓冲区程序数据区程序数据区a缓冲文件系统:缓冲文件系统:缓冲区缓冲区指令区指令区程序程序用户数据区用户数据区磁盘磁盘非缓冲文件系统:非缓冲文件系统:typedef struct int _fd;/文件号文件号 int _cleft;/缓冲区中剩下的字符数缓冲区中剩下的字符数
3、 int _mode;/文件操作方式文件操作方式 char *_next;/文件当前读写位置文件当前读写位置 char *_buff;/文件缓冲区位置文件缓冲区位置FILE;文件名文件名文件使用文件使用方式方式文件类型指针文件类型指针C程序程序操作系统操作系统磁盘磁盘要打开的文件名要打开的文件名使用文件方式使用文件方式例例 FILE *fp;fp=fopen(“f:yyqctest.dat”,”r”);例例 FILE *fp;char *filename=“f:yyqctest.dat”fp=fopen(filename,”r”);“r+/rb+”(读写读写)“a/ab”(追加追加)“w/wb
4、”(只写只写)“r/rb”(只读只读)“w+/wb+”(读写读写)“a+/ab+”(读写读写)为为输入输入打开一个打开一个文本文本/二进制二进制文件文件为为输出输出打开或建立一个打开或建立一个文本文本/二进制二进制文件文件为读为读/写打开一个文本写打开一个文本/二进制文件二进制文件为读为读/写建立一个文本写建立一个文本/二进制文件二进制文件为读为读/写打开或建立一个文本写打开或建立一个文本/二进制文件二进制文件向向文本文本/二进制二进制文件尾文件尾追加追加数据数据文件使用方式文件使用方式含义含义例例 文件打开与测试文件打开与测试 FILE *fp;if(fp=fopen(“aa.c”,“w”)
5、=NULL)printf(“File open error!n”);exit(0);文件打开时返回的文件类型指针文件打开时返回的文件类型指针磁盘文件磁盘文件输出文件缓冲区输出文件缓冲区输入文件缓冲区输入文件缓冲区程序数据区程序数据区a缓冲文件系统:缓冲文件系统:fclose不关闭文件可能会不关闭文件可能会丢失数据丢失数据 文件文件I/OI/O与终端与终端I/OI/O#define putc(ch,fp)fputc(ch,fp)#define getc(fp)fgetc(fp)#define putchar(c)fputc(c,stdout)#define getchar()fgetc(stdi
6、n)文本文件的结束标志,值为文本文件的结束标志,值为-1在在stdio.h中有定义中有定义例例11-1d1 从键盘输入字符,逐个从键盘输入字符,逐个 存到磁盘文件中,直到存到磁盘文件中,直到 输入输入#“为止为止#include main()FILE*fp;char ch,*filename=“out.txt”;if(fp=fopen(filename,w)=NULL)printf(cannot open filen);exit(0);printf(Please input string:);ch=getchar();while(ch!=#)fputc(ch,fp);putchar(ch);c
7、h=getchar();fclose(fp);例例11-1d2 读文本文件内容,读文本文件内容,并显示并显示#include main()FILE*fp;char ch,*filename=“out.txt”;if(fp=fopen(filename,”r)=NULL)printf(cannot open filen);exit(0);while(ch=fgetc(fp)!=EOF)putchar(ch);fclose(fp);判断文本文件是否结束while(c=fgetc(fp)!=EOF)putchar(c);fclose(fp);fclose(p1);fclose(p2);函数原型:in
8、t feof(FILE *fp)功能:判断文件是否结束返值:文件结束,返回真(非0);文件未结束,返回0 判断判断文本文件文本文件或或二进制二进制文件是否结束文件是否结束 while(!feof(fp)c=fgetc(fp);.例例g11-2 文件拷贝文件拷贝#include main()FILE*in,*out;char ch,infile10,outfile10;scanf(%s,infile);scanf(%s,outfile);if(in=fopen(infile,r)=NULL)printf(Cannot open infile.n);exit(0);if(out=fopen(out
9、file,w)=NULL)printf(Cannot open outfile.n);exit(0);while(!feof(in)fputc(fgetc(in),out);fclose(in);fclose(out);char *fgets(char *s,int n,FILE *fp)int fputs(char *s,FILE *fp)例例 从键盘读入字符串存入文件,再从文件读回显示从键盘读入字符串存入文件,再从文件读回显示fgetsfgets从从fpfp所指文件读所指文件读n-1n-1个字符送入个字符送入s s指向的内存区指向的内存区,并在最后加一个并在最后加一个00(若读入若读入n-
10、1n-1个字符前遇换行符或文件尾(个字符前遇换行符或文件尾(EOFEOF)即结束)即结束)fputsfputs把把s s指向的字符串写入指向的字符串写入fpfp指向的文件指向的文件#includemain()FILE *fp;char string81;if(fp=fopen(file.txt,w)=NULL)printf(cannt open file);exit(0);while(strlen(gets(string)0)fputs(string,fp);fputs(n,fp);fclose(fp);if(fp=fopen(file.txt,r)=NULL)printf(cannt ope
11、n file);exit(0);while(fgets(string,81,fp)!=NULL)fputs(string,stdout);fclose(fp);while(fgets(str,n,fp)!=NULL)puts(str);dtos_2(fp,81);fclose(fp);程序运行:程序运行:Windows 98 Windows 2000 Windows XP z调用函数调用函数dtos_2的输出结果为的输出结果为:Windows 98 Windows 2000 Windows XP调用函数调用函数dtos_2的输出结果为:的输出结果为:Windows 98 Windows 200
展开阅读全文