文件的输入与输出培训课件

上传人:yuzo****123 文档编号:137199149 上传时间:2020-07-06 格式:PPT 页数:82 大小:1,015KB
返回 下载 相关 举报
文件的输入与输出培训课件_第1页
第1页 / 共82页
文件的输入与输出培训课件_第2页
第2页 / 共82页
文件的输入与输出培训课件_第3页
第3页 / 共82页
文件的输入与输出培训课件_第4页
第4页 / 共82页
文件的输入与输出培训课件_第5页
第5页 / 共82页
点击查看更多>>
资源描述

《文件的输入与输出培训课件》由会员分享,可在线阅读,更多相关《文件的输入与输出培训课件(82页珍藏版)》请在金锄头文库上搜索。

1、2020/7/6,华中科技大学计算机学院,1,C 语言程序设计,华中科技大学计算机科学与技术学院C语言程序设计课程组 曹计昌 卢 萍 李 开 张茂元 祝建华 周时阳 制作,2020/7/6,华中科技大学计算机学院,2,C语言程序设计-第11章 文件的输入与输出,本章讨论关于计算机的存储器与I/O设备之间数据交换的程序设计问题。,2020/7/6,华中科技大学计算机学院,3,C语言程序设计-第11章 文件的输入与输出,2020/7/6,华中科技大学计算机学院,4,C语言程序设计-第11章 文件的输入与输出,11.1 文件概述 11.2 FILE指针和标准流式文件 11.3 流式文件的顺序输入输出

2、 11.4 流式文件的随机输入输出 11.5 其它文件操作函数 11.6 输入输出的低层接口 11.7 流式文件系统中库函数的设计,2020/7/6,华中科技大学计算机学院,6,11.1 文件概述,在C 语言中,文件中的数据分为两种数据格式存储。 第一类文本格式:将文件数据区的每个字节解释为一个字符,回车符n 解释为行结束标志(回车符之间的符号串称为一行)。,文件是指内存以外介质上以某种形式组织起来的数据集合。,2020/7/6,华中科技大学计算机学院,7,11.1 文件概述,这种格式的文件称为文本文件、行文文件、正文文件或纯文本文件。 文本文件是以字符序列形式存储数据的文件。,2020/7/

3、6,华中科技大学计算机学院,8,11.1 文件概述,如果将内存数据按文本文件存储到外存中,则C 语言通常需要将内存数据按指定格式转换成字符形式。,写文件,2020/7/6,华中科技大学计算机学院,9,11.1 文件概述,如果将存储在外存中的文本文件数据取回到内存,则C 语言通常需要将按指定格式转换成内存数据形式。,读文件,2020/7/6,华中科技大学计算机学院,10,11.1 文件概述,当将内存多个数据写入文本文件的时候,特别注意的是:在两个数据之间增加必的间隔符。 目的在于读文本文件时,能够保证获得数据转换的正确性。,2020/7/6,华中科技大学计算机学院,11,11.1 文件概述,C

4、语言是将键盘、显示器和打印机设备视同为文本文件进行处理的。 对于输出设备显示器和打印机,遇到输出回车符时,便换行显示或打印。,2020/7/6,华中科技大学计算机学院,12,第二类二进制格式:文件数据区仅按每个二进制位解释为0或1。,11.1 文件概述,这种格式的文件称为二进制文件。,二进制文件是以二进制数字01序列形式存储数据的文件。,二进制文件是以二进制数字01序列形式存储数据的文件。,2020/7/6,华中科技大学计算机学院,13,11.1 文件概述,如果将内存数据按二进制文件存储在外存中,则C 语言不需要转换,直接按内存数据形式存储。,2020/7/6,华中科技大学计算机学院,14,1

5、1.1 文件概述,如果将存储在外存中二进制文件的数据取回内存,则C 语言不需要转换,直接取回即可,其数值由内存单元的数据类型确定。,2020/7/6,华中科技大学计算机学院,15,11.1 文件概述,C语言中,对文件的读写方式有两种:顺序读写和随机读写。,2020/7/6,华中科技大学计算机学院,16,11.1 文件概述,C语言中,对文件的读写方式有两种:顺序读写和随机读写。,2020/7/6,华中科技大学计算机学院,17,11.1 文件概述,C语言中,对文件的读写方式有两种:顺序读写和随机读写。,2020/7/6,华中科技大学计算机学院,18,11.1 文件概述,顺序读写方式:打开文件时,读

6、写指针指向文件头;读写一个“数据”后,读写指针自动指向下一个“数据”;程序无法修改读写指针。数据必须是从文件头到文件尾,顺序读写。,2020/7/6,华中科技大学计算机学院,19,11.1 文件概述,随机读写方式:打开文件时,读写指针指向文件头;读写一个“数据”后,读写指针自动指向下一个“数据”;程序能改变读写指针。数据不必从文件头到文件尾顺序读写。,move,2020/7/6,华中科技大学计算机学院,20,11.1 文件概述,C语言文件输入输出的实现方法: (1)标准I/O 调用编译系统提供的关于文件输入输出的标准库函数来实现; (2)底层I/O 调用操作系统提供的关于文件输入输出的底层接口

7、函数来实现。,提示:C语言提供的标准I/O函数库中的每个函数都是基于操作系统提供的底层I/O接口函数实现的!,2020/7/6,华中科技大学计算机学院,21,11.1 文件概述,C语言标准I/O函数是基于“流”的概念实现的。 流是从源点到终点方向流动的数据。,概念上,文件是“存储”在I/O设备上的数据的抽象;流是内存与I/O设备之间流动的数据的抽象。实现时,流存储在I/O缓冲区中。,2020/7/6,华中科技大学计算机学院,22,11.1 文件概述,提示:C语言标准I/O函数都是基于I/O流操作!对应的文件称为流式文件。,2020/7/6,华中科技大学计算机学院,23,11.1 文件概述,底层

8、 I / O 接口函数是非缓冲形式的,涉及的文件称为非流式文件,即使是单个字符或字节的I/O操作也会引起外部设备的I/O动作。 在非流式文件中,程序通过文件描述符(文件描述字或文件句柄)对文件进行I/O操作,文件描述符是由操作系统分配提供的一个整型数。,2020/7/6,华中科技大学计算机学院,24,11.1 文件概述,文件操作的步骤都是: 第一,打开文件建立文件指针或文件描述符与文件间联系; 第二,对文件进行读写操作; 第三,关闭文件取消文件指针或文件描述符与文件间联系。,2020/7/6,华中科技大学计算机学院,25,11.2 FILE指针和标准流式文件,FILE是C语言标准中定义的一种结

9、构类型名称。 C语言标准规定FILE类型的结构变量应该能够记载关于流的控制方面的全部信息。 不同的 C编译器关于FILE结构类型的定义会略有差异,但提供的库函数原型都是满足C语言标准。,2020/7/6,华中科技大学计算机学院,26,11.2 FILE指针和标准流式文件,typedef struct short level; /* 缓冲区空满 */ unsigned flags; /* 文件状态标志 */ char fd; /* 文件描述符 */ unsigned char hold; /* 非缓冲回送字符 */ short bsize; /* 缓冲区大小 */ unsigned char *

10、buffer; /* 指向缓冲区指针 */ unsigned char *curp; /* 当前读写位置指针*/ unsigned istemp; /* 临时文件描述符 */ short token; /* 有效性检验标志 */ FILE; /* 结构类型命名 */,2020/7/6,华中科技大学计算机学院,27,11.2 FILE指针和标准流式文件,FILE类型的结构变量_streams是在头文件stdio.h中定义的,由系统创建、赋值和更新。,_streams 的个数是可以同时打开的文件数目,由系统宏定义。,extern FILE _Cdecl _streams;,#define OPEN

11、_MAX 20,2020/7/6,华中科技大学计算机学院,28,11.2 FILE指针和标准流式文件,程序中仅使用FILE * 型变量,通常简称为FILE指针。,2020/7/6,华中科技大学计算机学院,29,11.2 FILE指针和标准流式文件,_streams,OPEN_MAX1,0,1,2,#define stdin (,按照mode方式,打开文件filename,返回filename的文件指针。,FILE * fp; fpfopen(“c:test.dat”,”w”);,2020/7/6,华中科技大学计算机学院,32,11.3 流式文件的顺序输入输出,打开方式mode: r 只读 w

12、只写 a 添加 + 更新 b 二进制文件,这些mode符,可以组合;如果其中不含有“b”,则表示以文本文件方式打开。,2020/7/6,华中科技大学计算机学院,33,11.3 流式文件的顺序输入输出,r 以读方式打开文本文件 w 以写方式打开或创建文本文件(清除原内容) a 以写方式打开或创建文本文件(尾部添加) rb 以读方式打开二进制文件 wb 以写方式打开或创建二进制文件(清除原内容) ab 以写方式打开或创建二进制文件(尾部添加),2020/7/6,华中科技大学计算机学院,34,11.3 流式文件的顺序输入输出,r+ 以读写方式打开文本文件 w+ 以读写方式打开或创建文本文件(清除原内

13、容) a+ 以读写方式打开或创建文本文件(尾部添加) r+b或rb+ 以读写方式打开二进制文件 w+b或wb+ 以读写方式打开或创建二进制文件(清除原内容) a+b或ab+ 以读写方式打开或创建二进制文件(尾部添加),2020/7/6,华中科技大学计算机学院,35,11.3 流式文件的顺序输入输出,2.打开文件函数fclose(),int _Cdecl fclose(FILE *stream);,关闭文件指针stream“指向”的文件,返回值0表示正确执行,EOF表示出错。,2020/7/6,华中科技大学计算机学院,36,11.3 流式文件的顺序输入输出,3.文件的重定向函数freopen()

14、,FILE * _Cdecl freopen(const char * filename,const char *mode,FILE *fp);,在关闭fp指向的文件之后,fp重指向按照mode方式打开的、filename指定的文件。freopen函数返回新打开的文件指针,失败时返回NULL。,2020/7/6,华中科技大学计算机学院,37,11.3 流式文件的顺序输入输出,4. 基于字符的文件读写,int fgetc(FILE *stream); int fputc(int c, FILE *stream); int fgetchar(void); int fputchar(int c);

15、int _fgetc(FILE *stream); /* 仅供宏getc()使用 */ int _fputc(char c, FILE *stream); /* 仅供宏 putc()使用 */ int ungetc(int c, FILE *stream);,2020/7/6,华中科技大学计算机学院,38,11.3 流式文件的顺序输入输出,int fgetc(FILE *stream);,从文件指针stream联系的文件中读取一个字符,并将该字符作为unsigned char类型转换为整型值返回。到文件尾或读操作出错时返回EOF。,FILE * fp; char c; if(ch = fget

16、c(fp) != EOF) printf(“%c”,ch);,2020/7/6,华中科技大学计算机学院,39,11.3 流式文件的顺序输入输出,int fputc(int c, FILE *stream);,参数c转换成为unsigned char类型然后写到文件指针stream指向的输出流的当前位置处。返回值是被写字符;如果写操作出错或遇到文件尾函数返回EOF 。,FILE * fp; char c; fputc(ch,fp);,2020/7/6,华中科技大学计算机学院,40,int fgetchar(void);,fgetc(stdin),从标准的输入设备读入字符。,int fgetchar(void) return fgetc(stdin); ,11.3 流式文件的顺序输入输出,2020/7/6,华中科技大学计算机学院,41,int ungetc(i

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

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

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