程序设计基础(文件).ppt_第1页
程序设计基础(文件).ppt_第2页
程序设计基础(文件).ppt_第3页
程序设计基础(文件).ppt_第4页
程序设计基础(文件).ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

程序设计基础 C语言 文件 2 1 文件概念 什么是文件 文件是存储在外部介质上 介质 磁盘和磁带等外存储器 的数据或信息的集合例如程序文件中保存着源程序数据文件中保存着数据声音文件中保存着声音数据磁盘上的每个文件都有唯一的名字 进行标识 依据文件名找到相应的文件为什么要使用文件文件的改动不能引起程序的改动 即程序与数据分离不同的程序可以访问同一数据文件中的数据 即数据共享能够长期保存程序运行的中间数据或结果数据 3 1 文件概念 C语言实现文件操作通过操作系统完成对文件的输入输出操作通过由C语言的编译系统提供的一套用于文件操作的库函数 也称为 标准输入 输出库 文件的特点文件是一个有序的数据序列保存的所有数据有着严格的排列次序 类似于数组 要访问文件中的数据 必须按照它们的排列顺序 依次进行访问 4 1 文件概念 文件的分类数据的组织形式ASCII码文件ASCII码文件是将要存储的数据采用ASCII码的形式进行存储数据按顺序组成一个一个的字符序列每一个字符用一个ASCII码来表示 占用1个字节ASCII码形式的文件在文本编辑器下可以直接阅读保存在内存中的所有数据在存入文件的时候都要先转换为等价的字符形式当要从文件中读取数据时 再将字符串转换为浮点数例如 123 45 浮点数 将123 45转换为字符串 123 45 再存放 5 1 文件概念 文件的分类数据的组织形式二进制文件将数据按其在内存中的存储方式 二进制方式 原样输出到文件中存放的内存中的数据存入磁盘的时候不需要进行数据转换磁盘上保存的数据采用 语言规定的与内存数据一致的表示形式进行存储例如 123 45存放进二进制文件中将会占用4个字节 浮点数 6 1 文件概念 文件的分类数据的组织形式区别ASCII码文件较为直观 可读性好方便人们的阅读和理解可以直接在Windows下的记事本等工具直接观察占用存储空间较多而且在数据输入输出时必须进行二进制代码和ASCII码之间的转换二进制文件存储空间的利用效率高输入输出时不需要进行转换 因而速度较快 可以节省磁盘空间和转换时间二进制文件不能直接识别内存中的表示形式 不方便人们的阅读和理解 可读性差 7 1 文件概念 文件的分类文件的处理方式数据写入文件或从文件中读出数据的过程 8 1 文件概念 文件的分类文件的处理方式 写文件 将保存在内存中的数据写入磁盘首先要建立一个 输出文件缓冲区 通过该缓冲区可将内存中的数据存入磁盘 以文件的形式保存 读文件 将保存在文件中的数据装入内存首先要建立一个 输入文件缓冲区 将文件中的数据装入缓冲区然后再由缓冲区存入程序可以操作的内存数据区 9 1 文件概念 文件的分类文件的处理方式C语言系统对 缓冲区 的处理方式不同产生了两种不同的文件处理方式缓冲文件系统对每个正在使用的文件 系统自动地在内存中为其开辟一个缓冲区非缓冲文件系统指系统不会自动开辟缓冲区 而要由程序自行设置文件的缓冲区提示在ANSIC83标准中取消了非缓冲文件系统对文本文件和二进制文件均统一采用缓冲文件系统进行处理 10 1 文件概念 文件的分类文件的处理方式缓冲文件的特点缓冲区是一个连接计算机内存数据与外存文件的桥梁在内存开辟一个 缓冲区 为程序中的每一个文件使用执行读文件的操作时 从磁盘文件将数据先读入内存 缓冲区 装满后再从内存 缓冲区 依此读入进接收的变量执行写文件的操作时 先将数据写入内存 缓冲区 待内存 缓冲区 写满后再写入文件由此可见 内存 缓冲区 的大小 影响着实际操作外存的次数 内存 缓冲区 越大 操作外存的次数越少 执行速度就越快 效率就越高一般来说 文件的 缓冲区 的大小随机器而定 11 2 文件的操作 语言中文件的操作主要是由 语言库函数实现了解和掌握 语言提供的与文件有关的操作和规定文件的定义文件的状态访问文件的基本操作文件操作的函数属于 语言标准输入输出库中的函数应在程序函数的前面使用预处理命令 include include 12 2 文件的操作 文件指针每个正在使用的文件都要说明一个FILE类型的结构变量该类型就是文件读写所需要分配的内存区域的类型利用一个结构体类型的变量存放该结构变量用于存放文件的有关信息文件的名字 文件的性质 文件的当前状态等FILE类型由系统定义它包含的成员即FILE的各个分量由操作系统自动定义在头文件stdio h中定义通过文件结构的数据集合进行输入输出处理文件结构在打开文件时由操作系统自动建立 13 2 文件的操作 文件指针在头文件stdio h中定义的结构FILE typedefstruct shortlevel 文件的缓冲区级别 满或空的程度 unsignedflag 文件状态标志 charfd 文件号 intcleft 缓冲区的剩余字符 剩余空间 intmode 文件的操作模式 shortsize 缓冲区大小 char buffer 文件缓冲区的地址 位置 char curp 当前地址指针 下一个字符的位置 shorttoken 有效性检查控制单元 FILE 14 2 文件的操作 文件声明定义文件类型之后才能用其声明若干个FILE类型的变量存放文件的信息在 程序中 凡是要对已打开文件进行操作 都要通过指向该文件结构的指针定义FILE型 文件型 的指针变量通过文件指针变量找到与它相关的文件如果需要同时处理n个文件 一般需要说明n个指针变量使它们分别指向n个不同的文件 以实现对文件的访问我们只需要定义文件类型的指针通过这个指针 程序与操作系统之间交流信息 使用文件 15 2 文件的操作 文件声明格式说明FILE是文件结构的类型名 标识结构类型文件型指针是指向文件结构的指针例如 FILE p p是一指向文件结构的指针变量 提示 语言中标准设备文件是由系统控制的它们由系统自动打开和关闭用户在程序中可以直接使用 无需再进行说明 语言中提供了三个标准设备文件的指针stdin标准输入文件 键盘 stdout标准输出文件 显示器 stderr标准错误输出文件 显示器 FILE 文件型指针名 16 2 文件的操作 文件的操作过程打开文件建立用户程序与文件的联系系统为文件开辟文件缓冲区操作文件对文件的读 写 追加和定位操作读操作 从文件中读出数据写操作 向文件中写入数据其他操作关闭文件切断文件与程序的联系 将文件缓冲区的内容写入磁盘 并释放文件缓冲区 17 2 文件的操作 打开文件操作系统分配一块内存区域可以在这个区域上对文件进行读写操作将该文件的基本状态信息装入内存的该区域为了在后面对文件内容读写是能够找到这个内存区域 需要将这个内存区域的起始指针赋值给定义的FILE类型指针变量通过库函数fopen调用实现目的在程序与操作系统之间建立一种关联通过打开文件 程序把所要操作文件的要求 如要打开的文件名 文件的操作方式 读 写 等通知操作系统 18 2 文件的操作 打开文件fopen函数的调用形式说明FILE是前面介绍的文件类型fp是一个指向FILE类型的指针变量指向被打开的文件filename文件名所要打开的文件名称mode文件使用方式用具有特定含义的符号表示 FILE fp fp fopen char filename char mode 19 2 文件的操作 打开文件fopen函数的功能以mode方式打开由文件名filename指定的文件该函数的返回值为指针类型若文件打开成功返回一个指向该文件的指针若文件打开失败返回一个空指针NULL 20 例 打开文件的正确方法是 include stdio h FILE fp fp fopen stu dat w 以写方式打开当前目录下的stu dat文件并将返回的指向stu dat文件的文件指针赋给文件类型指针变量fp if fp NULL printf cannotopenfile n exit 0 2 文件的操作 21 例 以写方式打开一个readme txt文件 include stdio h voidmain FILE fp fp fopen readme txt w if fp NULL printf filenotfound fclose fp elseprintf fileopenedok 可以在fopen打开文件时检查函数的返回值是否为NULL以确定文件是否真正打开 若文件打开失败 还使用读写函数对文件进行读写操作将会出现错误 2 文件的操作 22 也可以写成下面这种方式 include stdio h voidmain FILE fp fp fopen readme txt w if fp NULL printf filenotfound exit 0 elseprintf fileopenedok exit 0 也是一个库函数 定义在 stdio h 中 它起的作用是 1 关闭所有文件 2 程序正常退出 3 返回操作系统 4 将 0 返回操作系统 一般情况下 exit 0 表示在程序设计者控制的范围内正常退出 exit 0 则表示程序非正常退出 2 文件的操作 23 2 文件的操作 文件的关闭当对文件操作结束后 程序要通知操作系统文件使用完毕关闭该文件意味着释放文件指针以供别的程序使用可以避免文件中数据的丢失否则容易导致对文件的误操作尤其是刚对文件进行写操作 如不关闭文件 可能会丢失刚刚写入的数据关闭文件采用C库函数fclose 24 2 文件的操作 文件的关闭fclose函数的调用形式说明文件指针是通过fopen打开的文件fclose函数关闭fopen打开的文件fclose函数返回值返回值为整型正常关闭时返回为0 否则返回为非0数 表示关闭出错函数的功能关闭由文件指针指定的文件切断缓冲区与该文件的联系释放文件指针 fclose 文件指针 25 例 以读方式打开一个文本文件readme txt然后关闭该文件 include stdio h voidmain FILE fp fp fopen readme txt r if fp NULL printf filenotfound n else printf fileopenedok n fclose fp printf fileclosed n 2 文件的操作 26 文件的读写是整个文件操作的核心 也是最灵活多变的部分 针对文本文件和二进制文件的不同性质进行分类操作 对文本文件可按字符读写或按字符串读写 对二进制文件可按成块读写或格式化读写 各种C语言编译系统都提供了丰富的文件读写函数 有一些库函数事实上已成为标准 读写字符C提供fgetc和fputc函数对文本文件进行字符的读写 函数定义格式 fgetc和fputc fgetc函数从输入流的当前位置返回一个字符 并将文件指针指示器移到下一个字符处 如果已经到文件尾部 函数返回EOF 此时表示本次操作结束 fputc函数完成将字符的值写入所指定的流文件的当前位置处 并将文件指针后移一位 该函数的返回值是所写入字符的值 出错时返回EOF 2 文件的操作 27 例 从键盘输入字符存储在磁盘文件test txt中 include stdio h main FILE fp charc fp fopen test txt w 以写的方式打开文件 if fp NULL printf Filedoesn texist n exit 0 while c fgetchar n 只要输入字符为非空格符 fputc c fp 写入文件一个字符 fclose fp 28 读写字符串f

温馨提示

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

评论

0/150

提交评论