重庆出版社出版李勇主编的大一C语言课程ppt第10章.ppt

上传人:zhu****ei 文档编号:5413789 上传时间:2020-01-28 格式:PPT 页数:25 大小:1.10MB
返回 下载 相关 举报
重庆出版社出版李勇主编的大一C语言课程ppt第10章.ppt_第1页
第1页 / 共25页
重庆出版社出版李勇主编的大一C语言课程ppt第10章.ppt_第2页
第2页 / 共25页
重庆出版社出版李勇主编的大一C语言课程ppt第10章.ppt_第3页
第3页 / 共25页
点击查看更多>>
资源描述
第10章文件 教学要求 通过本章的教学 读者必须掌握C语言文件的基本知识及其使用方法 学会文件的操作 并熟悉几个常用的文件处理函数 教学提示 文件是C语言中的一个重要的逻辑概念 操作复杂 是编制应用程序必须掌握的知识 本章主要介绍文件的相关知识及其使用方法 重点介绍文件的编制和读写方法 具体的是对文件操作函数的使用 教学内容 本章首先介绍了文件的类型 然后讲解了文件的打开与关闭操作 通过若干例子详细讲解了与文件相关的读写函数的具体使用方法 第10章文件 10 1文件概述10 1 1文件及文件名文件 file 是程序设计中一个重要的概念 所谓 文件 一般指存储在外部介质上数据的集合 一批数据是以文件的形式存放在外部介质 如磁盘 上的 操作系统是以文件为单位对数据进行管理的 也就是说 如果想找存在外部介质上的数据 必须先按文件名找到所指定的文件 然后再从该文件中读取数据 要向外部介质上存储数据也必须先建立一个以文件名为标识的文件 才能向它输出数据 为标识一个文件 每个文件都必须有一个文件名 其一般结构为 主文件名 扩展名 文件命名规则 遵循操作系统的约定 第10章文件 10 1 2文件分类根据用户的角度 文件可分为普通文件和设备文件两种 根据文件的内容 可分为程序文件和数据文件 程序文件又可分为源文件 目标文件和可执行文件 根据文件的组织形式 可分为顺序存取文件和随机存取文件 根据文件的存储形式 可分为ASCII码文件和二进制文件 ASCII文件又称文本 text 文件 它的每一个字节放一个ASCII代码 代表一个字符 二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放 第10章文件 10 1 3构成文件的基本单元与流式文件一个C语言文件是一个字节流或二进制流 它把数据看作是一连串的字符 字节 而不考虑记录的界限 换句话说 C语言中文件并不是由记录 record 组成的 这是和PASCAL或其他高级语言不同的 在C语言中对文件的存取是以字符 字节 为单位的 输入输出的数据流的开始和结束仅受程序控制而不受物理符号 如回车换行符 控制 也就是说 在输出时不会自动增加回车换行符以作为记录结束的标志 输入时不以回车换行符作为记录的间隔 我们把这种文件称为流式文件 C语言允许对文件存取一个字符 这就增加了处理的灵活性 第10章文件 10 1 4ANSIC的缓冲文件系统缓冲文件系统是指系统自动地在内存区为每一个正在使用的文件名开辟一个缓冲区 从内存向磁盘输出数据必须先送到内存中的缓冲区 装满缓冲区后才一起送到磁盘去 如果从磁盘向内存读入数据 则一次从磁盘文件将一批数据输入到内存缓冲区 充满缓冲区 然后从缓冲区逐个地将数据送到程序数据区 给程序变量 第10章文件 所谓 非缓冲文件系统 是指系统不自动开辟确定大小的缓冲区 而由程序为每个文件设定缓冲区 在UNIX系统下 用缓冲文件系统来处理文本文件 用非缓冲文件系统处理二进制文件 用缓冲文件系统进行的输入输出又称为高级 或高层 磁盘输入输出 高层I O 用非缓冲文件系统进行的输入输出又称为低级 低层 输入输出系统 1983年ANSIC标准决定不采用非缓冲文件系统 而只采用缓冲文件系统 即既用缓冲文件系统处理文本文件 也用它来处理二进制文件 也就是将缓冲文件系统扩充为可以处理二进制文件 第10章文件 10 2文件的打开与关闭10 2 1缓冲型文件类型缓冲文件类型指针缓冲文件系统中 关键的概念是 文件指针 每个被使用的文件都在内存中开辟一个区 用来存放文件的有关信息 如文件的名字 文件状态及文件当前位置等 这些信息是保存在一个结构体类型的变量中的 该结构体类型是由系统定义的 取名为FILE 有的C语言版本在stdio h文件中有以下的文件类型定义 typedefstruct int fd Fd 文件号 int cLEFt 缓冲区中剩下的字符 int modE 文件操作模式 int nExtc 下一个字符位置 int buFF 文件缓冲区模式 FILE 第10章文件 缓冲型文件的打开与关闭缓冲型文件的打开fopen函数功能 ANSIC规定了标准输入输出函数库 用fopen函数来实现打开文件 语句形式 fopen函数的调用方式通常为 FILE fp fp fopen 文件名 使用文件方式 其中 文件指针名 必须是被说明为FILE类型的指针变量 文件名 是被打开文件的文件名 文件名 是字符串常量或字符串数组 使用文件方式 是指文件的类型和操作要求 第10章文件 使用文件方式 第10章文件 缓冲型文件的关闭fclose函数在使用完一个文件后应该关闭它 以防止它再被误用 关闭 就是使文件指针变量不指向该文件 也就是文件指针变量与文件 脱钩 此后不能再通过该指针对原来与其相联系的文件进行读写操作 除非再次打开 使该指针变量重新指向该文件 用fclose函数关闭文件 fclose函数调用的一般形式为fclose 文件指针 例如 fclose fp 用fopen 函数打开文件时所带回的指针赋给了fp 该语句把该文件关闭 即fp不再指向该文件 第10章文件 10 2 2非缓冲型文件类型缓冲输入输出系统又称高级磁盘输入输出系统 非缓冲输入输出系统又称为低级磁盘输入输出系统 系统不为这类文件自动提供文件缓冲区 程序设计者必须自己设定一个缓冲区并考虑如何使用它们 非缓冲文件系统提供了一些输入输出函数 用于对这类文件进行输入输出操作 缓冲文件系统 高级I O系统 是有文件指针的 通过文件指针访问文件 而非缓冲文件系统 低级磁盘I O系统 则没有文件型指针 不是靠文件指针来访问文件 而是用一个整数代表一个文件 相当于FORTRAN等语言的 文件号 这个整数称为 文件说明符 第10章文件 open函数功能 用来打开一个非缓冲文件 语句形式 open 文件名 打开方式 说明 打开方式指该文件打开后的工作方式 即读 写方式 第10章文件 close函数功能 用来关闭已打开的文件 语句形式 close fd 说明 fd为整型变量 它是 文件说明符 即文件号 在打开文件时 open函数返回一个整数 这就是 文件说明符 文件号 在未关闭此文件之前 此文件说明符与该文件相联系 或者说它代表一个确定的文件 执行close函数后 文件号释放 它不再与一个确定的文件相联系 它可以再被用来与另一文件相联系 文件号是由系统在打开文件时分配的 而不是由程序设计者指定的 每一个C语言编译系统规定了可以同时打开的文件时的最大数目 第10章文件 10 3文件的读写函数文件打开后 最常见的操作就是读取和写入 C语言提供多种对文件的读取和写入的函数 这里主要介绍四种常用文件的读写操作函数 它们都是在头文件stdio h定义的 按字符读写的函数fputc fgetc 按字符串读写的函数fgets fputs 按格式要求读写的函数fprintf fscanf 按数据块读写的函数fread fwrite 第10章文件 10 3 1字符读写的函数fputc函数函数fputc的作用是向文件写入一个字符 用法 intfputc intc FILE fp 功能 输出一个字符到fp指定的文件中 成功是返回所写字符 出错时返回EOF 例如 fputc A fp fp为一个文件类型指针变量 上式将字符常量 A 也可以是字符型变量 写入文件当前位置 并且使文件位置指针下移一个字节 如果写入操作成功 返回值使该字符 否则返回EOF 第10章文件 fgetc函数函数fgetc的作用是从一个文件中读取一个字符 用法 intfgetc FILE fp 功能 从fp指定的文件中读取下一个字符 成功时返回读取的字符 出错或至文件结束时返回EOF 例如 a fgetc fp fp为一个文件类型指针变量 函数fgetc fp 不仅返回文件当前位置的字符将其赋给变量a 并且使文件位置指针下移一个字符 如果遇到文件结束 则返回值为文件结束标志EOF 该功能常用于判定是否已经到了文件的末尾 第10章文件 按字符串读写的函数fputs函数函数fputs的作用是向文件写入一个字符串 用法 intfputs char str FILE fp 功能 把字符串str输出到fp指定的文件中 写入文件成功 函数返回0 出错时返回EOF 提示 字符串的结束标志 0 不写入 例如 fputs Hello fp fp为一个文件类型指针变量 上式将字符串中的字符H e l l o写入文件指针的当前位置 第10章文件 fgets函数函数fgets的作用是从一个文件中读取一个字符串 用法 char fgets char buf intn FILE fp 功能 从fp指定的文件中读取一个长度为n 1的字符串 存入起始地址为buf的内存空间中 例如 fgets str n fp 其作用是从fp指向的文件的当前位置开始读取n 1个字符 并加上字符串结束标志 0 一起放入字符数组str中 如果从文件读取字符时遇到换行符或文件结束标志EOF 读取结束 函数返回值为字符数组str的首地址 第10章文件 10 3 3按格式要求读写的函数fprintf函数函数fprintf的作用与fprintf相似 只是输出对象不是标准输出设备而是文件 可以将printf看作fprintf的一个特例 它的输出对象是唯一的标准输出文件stdout 即显示器 即按照格式要求将数据写入文件 用法 intfprintf FILE fp char format argument 功能 将格式串format中的内容原样输出到所指定的文件中 每遇到一个 就按规定的格式 依次输出一个表达式argument的值到fp所指定的文件中 返回成功输出的项数 出错时返回EOF 例如 fprintf fp ld s 5 1f num name score 它的作用时将变量num name score按照 ld s 5 1f的格式写入fp指向的文件的当前位置 比较一下语句printf ld s 5 1f num name score 可见fprintf函数只是在printf的基础上增加了一个文件指针 第10章文件 fscanf函数函数scanf通过标准输入设备读取数据 同样 函数fscanf按照格式要求从文件中读取数据 用法 intfscanf FILE fp char format address 功能 从fp所指定的文件中按format规定的格式输入数据 并把输入的数据依次存入对应的地址address中 返回输入数据个数 例如 fscanf fp ld s 5 1f 它的作用是从fp指向的文件的当前位置开始 按照 ld s 5 1f的格式取出数据 赋给变量num name和score 第10章文件 10 3 4按数据块读写的函数fwrite函数函数fwrite的作用是将成批的数据块写入文件 用法 intfwrite void buf intsize intn FILE fp 功能 将buf指向的内存区中长度为size的n个数据写入fp文件中 返回写到fp文件中的数据项个数 例如 已知structstudent类型的数组stu 20 则语句fwirte 从结构体数组元素stu 1 存放的地址开始 以一个结构体structstudent类型变量所占字节数为一个数据块 共写入文件类型指针fp指向的文件2个数据块 即stu 1 stu 2 的内容写入文件 如果操作成功 函数的返回值为2 第10章文件 fread函数函数fread的作用是从文件中读出成批的数据块 用法 intfread void buf intsize intn FILE fp 功能 从fp文件中读取长度为size的n个数据项 放到buf指向的内存区 成功是返回所读的数据项个数 遇到文件结束或出错时返回EOF 例如 已知stu时一个结构体structstudent变量 则fread 从文件类型指针fp指向的文件当前位置开始 读取1个数据块 该数据块为结构体structstudent类型变量所占子结束 然后将读取的内容放入变量stu中 注意 fwrite和fread函数读写文件时 只有使用二进制方式 才可以读写任何类型的数据 最常用与读写数组和结构体类型数据 第10章文件 10 3 5文件的其他常用函数feof函数用法 intfeof FILE fp 功能 检测fp所指定的文件是否遇到文件结束标志EOF 遇到文件结束符返回非零值否则返回0 rewind函数用法 voidrewind FILE fp 功能 把fp文件的位置指针重新定位到文件的开始位置 第10章文件 fseek函数用法 intfseek FILE fp longoffset intorigin 功能 将fp文件的位置指针移到新的位置 新位置与origin所指的位置的距离为offset字节 offset为正数表示指针往后移 负数表示指针往前移 origin的取值为下列符号常量 SEEK SET或者数字0 代表文件的开始位置 SEEK CUR或者数字1 代表文件的当前位置 SEEK END或者数字2 代表文件尾 ftell函数用法 longftell FILE fp 功能 返回fp文件的位置指针的当前位置 即相对于文件起始位置的偏移量 单位是字节 出错时返回 1L 第10章文件 10 5实训P195思考与习题P197
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!