《c语言入门至精通》第13章 文件

上传人:小** 文档编号:89190547 上传时间:2019-05-21 格式:PPT 页数:33 大小:472.10KB
返回 下载 相关 举报
《c语言入门至精通》第13章 文件_第1页
第1页 / 共33页
《c语言入门至精通》第13章 文件_第2页
第2页 / 共33页
《c语言入门至精通》第13章 文件_第3页
第3页 / 共33页
《c语言入门至精通》第13章 文件_第4页
第4页 / 共33页
《c语言入门至精通》第13章 文件_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《《c语言入门至精通》第13章 文件》由会员分享,可在线阅读,更多相关《《c语言入门至精通》第13章 文件(33页珍藏版)》请在金锄头文库上搜索。

1、,第13章 文件,C语言程序设计 第十章 指针,C文件概述,文件类型指针,文件的打开与关闭,文件的读写,文件的定位,出错的检测,文件输入输出小结,本章学习目标 理解文本文件和二进制文件的区别; 理解 FILE *fp 文件指针; 能够用函数fopen和fclose打开和关闭文件; 掌握常用的文件读/写函数;,C语言程序设计 第十三章 文件,13.1 C文件概述 文件:存储在外部介质上数据的集合,是操作系统数据管理的单位。,C语言程序设计 第十三章 文件,使用数据文件的目的 1、数据文件的改动不引起程序的改动程序与数据分离。 2、不同程序可以访问同一数据文件中的数据数据共享。 3、能长期保存程序

2、运行的中间数据或结果数据。,文件分类 按文件的逻辑结构: 记录文件:由具有一定结构的记录组成(定长和不定长) 流式文件:由一个个字符(字节)数据顺序组成,按存储介质: 普通文件:存储介质文件(磁盘、磁带等) 设备文件:非存储介质(键盘、显示器、打印机等) 按数据的组织形式: 文本文件: ASCII文件,每个字节存放一个字符的ASCII码 二进制文件:数据按其在内存中的存储形式原样存放,C语言程序设计 第十三章 文件,C语言的文件是流式文件。 所谓流就是一系列的字节或者字符,输入输出数据流的开始和结束仅受程序控制,而不受物理符号(如回车符)的控制。这种文件称为流式文件。,C语言程序设计 第十三章

3、 文件,文本文件特点: 存储量大、速度慢、便于对字符操作,二进制文件特点: 存储量小、速度快、便于存放中间结果,文件处理方法 缓冲文件系统:高级文件系统,系统自动为正在使用的文件开辟内存缓冲区。可减少主机和外部设备频繁交换数据的次数 非缓冲文件系统:低级文件系统,由用户在程序中为每个文件设定缓冲区,C语言程序设计 第十三章 文件,13.2 文件类型指针 文件结构体类型FILE 缓冲文件系统为每个正使用的文件在内存开辟文件信息区 文件信息用系统定义的名为FILE的结构体描述 Turbo C在stdio.h文件中有以下的文件类型声明:,C语言程序设计 第十三章 文件,typedef struct

4、short level; /*缓冲区“满”或“空”的程度*/ unsigned flags; /*文件状态标志*/ char fd; /*文件描述符*/ unsigned char hold; /*如无缓冲区不读取字符*/ short bsize; /*缓冲区的大小*/ unsigned char *buffer; /*数据缓冲区的位置*/ unsigned ar *curp; /*指针,当前的指向*/ unsigned istemp /*临时文件,指示器*/ short token; /*用于有效性检查*/ FILE;,定义文件类型变量 存放文件的信息 如:定义FILE类型数组,存放若干文件

5、信息:FILE f5; 定义文件型指针变量,指向FILE类型结构体变量,通过该结构体变量中的文件信息访问文件。 如:FILE *fp; 用法: 文件打开时,系统自动建立文件结构体,并把指向它的指针返回来,程序通过这个指针获得文件信息,访问文件 如:fp=fopen(“a1“,“r“); 文件关闭后,它的文件结构体被释放,C语言程序设计 第十三章 文件,经过定义的文件指针,就可以用来指向一个文件!,13.3 文件的打开与关闭 C文件操作用库函数实现,包含在stdio.h 文件使用方式:打开文件文件读/写关闭文件 系统自动打开和关闭三个标准文件: 标准输入-键盘 stdin 标准输出-显示器 st

6、dout 标准出错输出-显示器 stderr,C语言程序设计 第十三章 文件,文件的打开(fopen函数) 函数原型: FILE *fopen(char *name,char *mode) 调用方式:fopen(“文件名“,“使用文件方式“) 例:FILE *fp; fp=fopen(“d:usermyfile.txt“,“r“);,为什么 ,Read,返回值:正常打开,返回指向文件结 构体的指针;打开失败,返回 NULL,C语言程序设计 第十三章 文件,FILE *fp; fp=fopen(“aa.c”,“w”); if(fp=NULL) printf(“File open error!n”

7、); exit(0); /*关闭所有文件终止调用*/ ,r 只读 出错 正常,w 只写 建立新文件 原内容丢失,a 追加 建立新文件 在原内容后追加,r+/w+ 读写 出错 正常,r:读方式; w:写方式; a:追加方式; rb/wb/ab:二进制方式; +:既可读又可写,文件的关闭(fclose函数) 作用:使文件指针变量与文件“脱钩”,释放文件结构体和文件指针,C语言程序设计 第十三章 文件,FILE *fp; fp=fopen(“a.txt”,“r”); fclose(fp);,返回值:用于表示文件是否被正确地关闭,如果文件顺利关闭,该值为0,否则为-1(EOF)。 返回值可以用ferr

8、or函数测试,13.4 文件的读写 文件打开之后,就可以对它进行读与写的操作了。 读写文件中的一个字符 fputc函数(putc函数) 函数原型:int fputc(int c, FILE *fp) 功能:把一字节代码c写入fp指向的文件中 返值:正常,返回c;出错,为EOF(-1),C语言程序设计 第十三章 文件,fgetc函数(getc函数) 函数原型:int fgetc(FILE *fp) 功能:从fp指向的文件中读取一字节代码 返值:返回读到的代码值;读到文件尾或出错为EOF(-1),feof函数 调用方式:feof(fp) 功能:对于二进制文件读取时判断文件是否结束。 返值:结束-1

9、;反之0。,字符常量或变量,文件指针变量,文件指针变量,文件I/O与终端I/O的关系,C语言程序设计 第十三章 文件,#define putc(ch,fp) fputc(ch,fp) #define getc(fp) fgetc(fp) #define putchar( c ) fputc(c,stdout) #define getchar( ) fgetc(stdin),文本文件: FILE *fp; fp=fopen(“a.txt”,“r”); ch=fgetc(fp); while(ch!=EOF) putchar(ch); ch=fgetc(fp); fclose(fp);,二进制或文

10、本文件: FILE *fp; fp=fopen(“a1”,“r”); ch=fgetc(fp); while(!feof(fp) putchar(ch); ch=fgetc(fp); fclose(fp);,C语言程序设计 第十三章 文件,例13.1 从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个“#”为止。,#include #include void main() FILE *fp; char ch , filename10; scanf(“%s“, filename); if(fp=fopen(filename,“w“)=NULL) printf(“cannot open fi

11、len“); exit(0); /*终止程序*/ ch=getchar(); /*接收执行scanf时最后输入的回车符*/ ch=getchar(); /*第一个输入的字符被赋给变量ch*/ while(ch!=#) fputc(ch,fp); /*字符被写入filename表示的文件中*/ putchar(ch); /*字符被输出到显示器*/ ch=getchar(); putchar(10); /*向屏幕输出一个换行符*/ fclose(fp); /*关闭文件*/,C语言程序设计 第十三章 文件,例13.2 将一个磁盘文件中的信息复制到另一个磁盘文件中。,#include #include

12、 void main() FILE *in, *out; char ch,infile10,outfile10; printf(“Enter the infile name:n“); scanf(“%s“,infile); /*输入文件的文件名*/ printf(“Enter the outfile name:n“); scanf(“%s“,outfile); /*输出文件的文件名*/ if (in = fopen(infile, “r“)= NULL) printf(“Cannot open infile.n“);exit(0); if (out = fopen(outfile, “w“)=

13、 NULL) printf(“Cannot open outfile.n“);exit(0); while (!feof(in) fputc(fgetc(in), out); fclose(in); fclose(out); ,二进制文件时:“ rb ”和“ wb ”,C语言程序设计 第十三章 文件,例 用main参数,在输入命令行时把两个文件名一起输入。,#include #include void main(int argc,char *argv ) FILE *in, *out; char ch; if(argc!=3) printf(“You forgot to enter a filenamen“); exit(0); if (in = fopen(argv1, “r“)= NULL) printf(“Cannot open infile.n“); exit(0); if (out = fopen(argv2, “w“)= NULL) printf(“Cannot open outfile.n“); exit(0); while (!feof(in) fputc(fgetc(in), out); fclose(in); fclo

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号