程序设计基础-文件PPT课件_第1页
程序设计基础-文件PPT课件_第2页
程序设计基础-文件PPT课件_第3页
程序设计基础-文件PPT课件_第4页
程序设计基础-文件PPT课件_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8章文件 主要内容 8 1文件的基本概念8 2常用文件操作的标准函数8 3案例应用 8 1文件的基本概念 计算机信息系统中 根据信息的存储时间 可以分为临时性信息和永久性信息 简单来说 临时信息存储在计算机系统临时存储设备 例如存储在计算机内存 这类信息随系统断电而丢失 永久性信息存储在计算机的永久性存储设备 例如存储在磁盘和光盘 永久性的最小存储单元为文件 因此文件管理是计算机系统中的一个重要的问题 一般来说 每台计算机都有一个操作系统负责管理计算机的各种资源 操作系统的文件系统负责将外部设备 如硬盘 打印机 光驱等 的信息组织方式进行统一规划 提供统一的程序访问数据的方法 8 1 1文件概述 对于操作系统来说 文件是存储在磁盘上的一个信息序列 操作系统为这个信息序列起一个名称 这个名称就叫做文件名 或文件标识符 由于文件存储在外存中 外存的信息相对于内存来说是海量的 而且出于安全 规范的角度 不能够允许程序随意使用外存的信息 因此 当程序要使用文件时必须向操作系统申请使用 操作系统按规则授权给程序后程序才可以使用 使用完毕后 程序应该通知操作系统 终端文件中有3个文件是特殊的 每个C程序都用到 这3个文件是 标准输入文件 stdin 对应键盘 标准输出文件 stdout 对应终端屏幕 标准出错信息文件 stderr 对应终端屏幕 这3个文件对所有的C程序都是自动设置和打开的 当程序调用getchar 和scanf 时 就是从标准输入文件 键盘 读取信息 调用putchar 和printf 就是向标准输出文件 屏幕 输出信息 8 1 2文件的类别 对于操作系统来说 文件就是一个由字节为单位的信息流序列 如果将C语言涉及的所有数据存储在文件中 必然有一个约定规则 一个整数存储在文件中可以有多种方式 如整数28036存储在文件可直接存储2个字节0 x0B和0 x14 也可以直接存储它的正文方式 2 8 0 3 6 前者称为二进制方式 后者称为文本方式 亦称正文方式 1 文本文件 文本文件是一种典型的顺序文件 其文件的逻辑结构又属于流式文件 文本文件是指以ASCII码方式 也称文本方式 存储的文件 更确切地说 英文 数字等字符存储的是ASCII码 而汉字存储的是机内码 文本文件中除了存储文件有效字符信息 包括能用ASCII码字符表示的回车 换行等信息外 不能存储其他任何信息 因此文本文件不能存储声音 动画 图像 视频等信息 2 二进制文件 文件作为信息存储的一个基本单位 根据其存储信息的方式不同 分为文本文件 又名ASCII文件 和二进制文件 如果将存储的信息采用字符串方式来保存 那么称此类文件为文本文件 如果将存储的信息严格按其在内存中的存储形式来保存 则称此类文件为二进制文件 8 1 3文件的操作流程 C语言对缓冲文件系统的使用是通过一系列库函数来实现 读写文件必须遵循一定的步骤 8 1 4文件的定义 在一个应用程序中 可能同时处理多个文件 如何来描述并区分多个文件呢 在C语言中定义了一个结构体数据类型FILE来描述文件信息 一般来讲 以f开头的函数均为文件处理函数 文件处理函数可以分为如下几类 1 文件打开与关闭函数 2 文件读写函数 3 文件定位函数 4 文件状态跟踪函数 8 2常用文件操作的标准函数 标准C定义了文件库函数的原型在头文件中 本节介绍文件的打开 读写及关闭函数 8 2 1文件的打开与关闭 1 打开文件 在C语言中 除了3个标准文件外的所有文件在读写前都必须显式的打开 文件的打开操作是通过fopen 函数来实现的 此函数的声明在 stdio h 中 函数原型如下 FILE fopen constchar filename constchar mode 函数返回值 FILE类型指针 如果运行成功 fopen返回文件的地址 否则返NULL 2 关闭文件 在C语言中 文件的关闭是通过fclose 函数来实现 此函数的声明在 stdio h 中 函数原型如下 intfclose FILE fp 函数返回值 int类型 如果为0 则表示文件关闭成功 否则表示失败 fclose 函数的作用是关闭已经打开的文件 要求操作系统将文件句柄fp所代表的文件系统进行关闭 8 2 2文本文件的读写 文件打开之后 就可以进行读写操作 文件的读写操作通过一组库函数实现 分为读函数和写函数 常用的读写函数分为如下几类 1 字符的读写2 数值的读写3 格式化读写4 块的读写5 字符串的读写 1 字符的读写 fputc 函数的作用是从当前文件位置开始向文件输出一个字符函数形式参数说明如下 intc 准备输出的字符 FILE stream 文件地址 为FILE 类型变量 函数返回值 int类型 如果返回值为 1 EOF 则表示字符输出失败 否则返回值为c 即与输出的字符相等 fgetc 函数的作用是从当前文件位置读取一个字符函数形式参数说明如下 FILE stream 用读写模式和只读模式打开的文件地址 为FILE 类型变量 函数返回值 int类型 如果返回值为 1 表示已经读到文件末尾 否则返回读到的字符 2 数值的读写 getw 函数的作用是从文件读取一个字信息 函数的形式参数如下 FILE stream 文件地址 函数返回值 如果成功读取 则返回当前读入的信息 否则返回EOF putw 函数的作用将一个字的信息输出到文件中 函数的形式参数如下 FILE stream 文件地址 intw 整型数据 函数返回值 如果成功 与输入参数w的值相等 否则返回EOF 3 格式化读写 1 fprintf 函数函数的意义是 将省略号表示的位置列出的表达式的值计算出来后 按mode中指定的格式输到有fp指向的文件中 2 fscanf 函数函数的意义 从fp指向的文件中 按mode中指定的格式逐个读取文本数据转换成指定的数据类型 附给对应指针指向的存储单元中 4 块的读写 文件输入输出函数中还提供了块的输入输出函数 即将内存中的一段信息作为一个整体进行输入输出操作 其在 stdio h 中的函数原型如下 size tfread void ptr size tsize size tn FILE stream size tfwrite constvoid ptr size tsize size tn FILE stream 其中size t在 stdio h 中的定义如下typedefunsignedsize t 5 字符串的读写 fgets 函数的形式参数如下 char s 有效内存地址 以便可以存储从文件读取的字符串 intn 读取字符串的长度 确定从文件中读取多少个字符 实质上 此函数从文件中读取n 1个字符到当前的字符串中 然后自动添加字符串结束符 0 但是如果此文件中一行长度小于n 则到此行的换行符为止 并将此换行符读取到字符串中 FILE stream 文件地址 fputs 函数的形式参数如下 constchar s 有效的字符串 此字符串中不包括 n intn 字符串长度 实质上 在向文件输出信息时 并不输出 0 FILE stream 文件地址 函数返回值 整型数据 如果函数运行成功 则返回0 否则返回EOF 8 2 3二进制文件的读写 对二进制文件读写的库函数是fread 和fwrite 由于它们用来将二进制代码的数据进行输入和输出 因此又称为直接输入输出函数 1 读二进制文件的函数fread fread 函数从fp指向的二进制文件中 读入count个大小为size个字节的数据块到buf所指向的内存中 如果执行成功 则返回实际读取的数据块的个数 例如 从已经打开的文件指针fp所指向的文件中读入10个长整数到数组longa 20 中 这10个数依次存储到a 9 开始的10个元素位置 2 写二进制文件的函数fwrite fwrite 函数从buf所指向的内存中 读入count个大小为size个字节的数据块写入到fp指向的文件中 如果执行成功 则返回实际写入的数据块的个数 例如 将长整数数组a 20 的前10个元素写入文件f中 if fwrite a sizeof long 10 f 10 printf 文件写出现错误 n 8 2 4文件的随机访问与定位 文件可以理解为一个完整的数据流 因此可以将 数据流 分为文件头 文件尾和文件主体三个部分 在C语言中通过FILE类型指针描述文件流的位置 因此FILE类型指针又称为文件指针 在缺省情况下 文件的读取是按顺序进行的 在完成一段信息的读写之后 文件指针移动到其后的位置上准备读取下一次读写 在特殊情况下 需要对文件进行随机的读写 即读取当前位置的信息后 并不读取紧接其后的信息 而是根据需要读取特定位置处的信息 为了满足文件的随机读写操作 C语言中提供了文件指针定位函数 1 文件定位函数fseek 函数原型 intfseek FILE stream longoffset intwhence 函数的形式参数如下 FILE stream 文件地址 longoffset 文件指针偏移量 intwhence 偏移起始位置 函数返回值 非零值表示是成功 0表示失败 2 将文件指针移动到文件开始位置的函数rewind 函数原型 voidrewind FILE stream 函数的形式参数如下 FILE stream 文件地址 函数返回值 无此函数的作用是将当前文件指针重新移动到文件的开始位置 其功能相当于如下的程序段 将文件指针移动到文件头 并清除状态标志 3 获得文件指针当前位置的函数ftell 函数原型 longftell FILE stream FILE stream 文件地址 函数返回值 运行成功 返回当前位置相对于文件开始的相对偏移量 否则返回 1 ftell 函数的作用是获得文件指针的当前位置 此位置为相对于文件开始位置的相对偏移量 8 2 5文件使用举例 模拟DOS系统的COPY命令 实现文件复制 编写一个程序 从data dat文本文件中读出一个字符 将其加密后写入data1 dat文件中 加密方式是字符的ASCII码加1 8 3案例应用 本章小结 文件是指存储在外部介质上一组相关数据的集合 一批数据是以文件的形式存放在外部介质上的 而操作系统以文件为单位对数据进行管理 C语言所使用的磁盘文件系统有两类 一类称为缓冲文件系统 即标准文件系统 另一类称为非缓冲文件系统 在C语言中 没有输入输出语句 对文件的读写都是用库函数来实现的 对磁盘文件的操作必须先打开 后读写 最后关闭 文件的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论