已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
概述 开关文件 读写文件 文件定位 第七章文件 文件 存储在外部介质上数据的集合 是操作系统数据管理的单位 文件分类按文件的逻辑结构 记录文件 由具有一定结构的记录组成 定长和不定长 流式文件 由一个个字符 字节 数据顺序组成按存储介质 普通文件 存储介质文件 磁盘 磁带等 设备文件 非存储介质 键盘 显示器 打印机等 按数据的组织形式 文本文件 ASCII文件 每个字节存放一个字符的ASCII码二进制文件 数据按其在内存中的存储形式原样存放 C文件概述 使用数据文件的目的1 数据文件的改动不引起程序的改动 程序与数据分离2 不同程序可以访问同一数据文件中的数据 数据共享3 能长期保存程序运行的中间数据或结果数据 文本文件特点 存储量大 速度慢 便于对字符操作 二进制文件特点 存储量小 速度快 便于存放中间结果 文本文件特点 存储量大 速度慢 便于对字符操作 文件处理方法缓冲文件系统 高级文件系统 系统自动为正在使用的文件开辟内存缓冲区非缓冲文件系统 低级文件系统 由用户在程序中为每个文件设定缓冲区 文件类型指针文件结构体FILE缓冲文件系统为每个正使用的文件在内存开辟文件信息区文件信息用系统定义的名为FILE的结构体描述FILE定义在stdio h中 typedefstruct int fd 文件号int cleft 缓冲区中剩下的字符数int mode 文件操作方式char next 文件当前读写位置char buff 文件缓冲区位置 FILE 文件类型指针指针变量说明 FILE fp 用法 文件打开时 系统自动建立文件结构体 并把指向它的指针返回来 程序通过这个指针获得文件信息 访问文件文件关闭后 它的文件结构体被释放 文件的基本操作步骤各步骤的含义 指向文件的指针变量在 stdio h 中struct iobuf char FAR ptr int cnt char FAR base char flag char file typedefstruct iobufFILE 打开文件 读写 创建 文件 关闭文件 typedefstruct int fd 文件号 int cleft 缓冲区剩下的字符 int mode 文件操作模式 char nextc 下一个字符指针 char buff 文件缓冲区指针 FILE 例如 FILE fp1 fp2 1 打开文件FILE fp fp fopen filename mode filename中可以带路径名 一般方法如下 FILE fp if fp fopen c doc exam txt w NULL puts Cannotopenthefile n exit 1 开关文件 Mode 方式 意义 r 读文本文件 w 写生成文本文件 a 向文本文件追加 rb 读打开二进制文件 wb 写生成进制文件 ab 向二进制文件追加 打开方式 mode Mode 方式 意义 r 读写文本文件 w 读写 创建 文本文件 a 向文本文件追加 rb 读打开 二进制文件 wb 读写 创建 二进制文件 ab 向二进制文件读写 追加 打开方式 mode 2 关闭文件一般方法如下 fclose FilePointer 或 if fclose filepointer NULL printf closeerror exit 2 使用FILE类型和fopen fclose 函数应包含stdio h 1 输入输出字符1 I O字符ch fgetc fp fputc ch fp putchar ch 实际上是用fputc ch fp 定义的一个宏 defineputchar ch fputc ch stdout 默认输出到标准输出设备 显示器即标准输出文件stdout 2 判断文件尾fgetc 在读到文件末尾时 返回文件结束标志EOF 在stdio h中定义为 1 此标志只适合于文本文件 二进制文件中的数值 1会与其相混 造成提前结束 常用feof 函数测试文件尾 若是文件结束返回值1 它既可以用于二进制文件也可以用于文本文件 读写文件 2 输入输出数据块一次可I O一个数组或结构体类型的数据 后者与其它高级语言的记录读写 ANSIC设置了两个函数 fread buffer size count fp fwrite buffer size count fp 例 从键盘输入5个学生的数据 存为文本文件 然后读回验证 3 格式化I Ofprintf fp formstr outlist fscanf fp formstr outlist 文件的读写字符I O fputc与fgetcfputc函数原型 intfputc intc FILE fp 功能 把一字节代码c写入fp指向的文件中返值 正常 返回c 出错 为EOF fgetc函数原型 intfgetc FILE fp 功能 从fp指向的文件中读取一字节代码返值 正常 返回读到的代码值 读到文件尾或出错 为EOF 文件I O与终端I O defineputc ch fp fputc ch fp definegetc fp fgetc fp defineputchar c fputc c stdout definegetchar fgetc stdin 判断二进制文件是否结束while feof fp c fgetc fp 例从键盘输入字符 逐个存到磁盘文件中 直到输入 为止 includemain FILE fp charch filename out txt if fp fopen filename w NULL printf cannotopenfile n exit 0 printf Pleaseinputstring ch getchar while ch fputc ch fp putchar ch ch getchar fclose fp 例读文本文件内容 并显示 includemain FILE fp charch filename out txt if fp fopen filename r NULL printf cannotopenfile n exit 0 while ch fgetc fp EOF putchar ch fclose fp 判断文本文件是否结束 feof函数原型 intfeof FILE fp 功能 判断文件是否结束返值 文件结束 返回真 非0 文件未结束 返回0 includemain FILE in out charch infile 10 outfile 10 scanf s infile scanf s outfile if in fopen infile r NULL printf Cannotopeninfile n exit 0 if out fopen outfile w NULL printf Cannotopenoutfile n exit 0 while feof in fputc fgetc in out fclose in fclose out 数据块I O fread与fwrite函数原型 size tfread void buffer size tsize size tcount FILE fp size tfwrite void buffer size tsize size tcount FILE fp 功能 读 写数据块返值 成功 返回读 写的块数 出错或文件尾 返回0说明 typedefunsignedsize t buffer 指向要输入 输出数据块的首地址的指针size 每个要读 写的数据块的大小 字节数 count 要读 写的数据块的个数fp 要读 写的文件指针fread与fwrite一般用于二进制文件的输入 输出 例floatf 2 FILE fp fp fopen aa dat rb fread f 4 2 fp for i 0 i 2 i fread 例structstudent intnum charname 20 charsex intage floatscore 3 stud 10 for i 0 i 10 i fread 例从键盘输入4个学生数据 把他们转存到磁盘文件中去 include defineSIZE2structstudent type charname 10 intnum intage charaddr 15 stud SIZE main inti for i 0 i SIZE i scanf s d d s stud i name voidsave FILE fp inti if fp fopen d fengyi exe stu dat wb NULL printf cannotopenfile n return for i 0 i SIZE i if fwrite voiddisplay FILE fp inti if fp fopen d fengyi exe stu dat rb NULL printf cannotopenfile n return for i 0 i SIZE i fread 格式化I O fprintf与fscanf函数原型 intfprintf FILE fp constchar format argument intfscanf FILE fp constchar format address 功能 按格式对文件进行I O操作返值 成功 返回I O的个数 出错或文件尾 返回EOF 例fprintf fp d 6 2f i t 将i和t按 d 6 2f格式输出到fp文件fscanf fp d f 若文件中有3 4 5 则将3送入i 4 5送入t 例从键盘按格式输入数据存到磁盘文件中去 includemain chars 80 c 80 inta b FILE fp if fp fopen test w NULL puts can topenfile exit fscanf stdin s d s 字符串I O fgets与fputs函数原型 char fgets char s intn FILE fp intfputs char s FILE fp 功能 从fp指向的文件读 写一个字符串返值 fgets正常时返回读取字符串的首地址 出错或文件尾 返回NULLfputs正常时返回写入的最后一个字符 出错为EOF 例从键盘读入字符串存入文件 再从文件读回显示 fgets从fp所指文件读n 1个字符送入s指向的内存区 并在最后加一个 0 若读入n 1个字符前遇换行符或文件尾 EOF 即结束 fputs把s指向的字符串写入fp指向的文件 includemain FILE fp charstring 81 if fp fopen file txt w NULL printf cann topenfile exit 0 while strlen gets string 0 fputs string fp fputs n fp fclose fp if fp fopen file txt r NULL printf cann topenfile exit 0 while fgets string 81 fp NULL fputs string stdout fclose fp 1 返回文件开头rewind fp 2 随机定位fseek fp 偏移量 起始点 起始点名字数字表示文件开始SEEK SET0文件当前位置SEEK CUR1文件末尾SEEK END2偏移量可以用 表示向前或向后移动 文件定位 文件的定位几个概念文件位置指针 指向当前读写位置的指针读写方式顺序读写 位置指针按字节位置顺序移动 叫 随机读写 位置指针按需要移动到任意位置 叫 rewind函数函数原型 voidrewind FILE fp 功能 重置文件位置指针到文件开头返值 无 例对一个磁盘文件进行显示和复制两次操作 includemain FILE fp1 fp2 fp1 fopen d fengyi bkc ch12 4 c r fp2 fopen d fengyi bkc ch12 41 c w while feof fp1 putchar getc fp1 rewind fp1 while feof fp1 putc getc fp1 fp2 fclose fp1 fclose fp2 fseek函数函数原型 intfseek FILE fp longoffset intwhence 功能 改变文件位置指针的位置返值 成功 返回0 失败 返回非0值 文件指针 位移量 以起始点为基点 移动的字节数 0向后移动 0向前移动 起始点文件开始SEEK SET0文件当前位置SEEK CUR1文件末尾SEEK END2 例fseek fp 100L 0 fseek fp 50L 1 fseek fp 10L 2 ftell函数函数原型 longftell FILE fp 功能 返回位置指针当前位置 用相对文件开头的位移量表示 返值 成功 返回当前位置指针位置 失败 返回 1L 例磁盘文件上有3个学生数据 要求读入第1 3学生数据并显示
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海珠区2025广东广州市海珠区人大常委会办公室招聘雇员笔试历年参考题库典型考点附带答案详解
- 浙江省2025浙江省人力资源和社会保障厅所属部分事业单位招聘15人笔试历年参考题库典型考点附带答案详解
- 济宁市2025年曲阜市事业单位急需紧缺人才引进笔试历年参考题库典型考点附带答案详解
- 济南市2025山东济南高新技术产业开发区管委会工会社会工作专业人才招聘4人笔试历年参考题库典型考点附带答案详解
- 泰安市2025年山东泰安市市直事业单位“归雁兴泰”人才回引活动笔试历年参考题库典型考点附带答案详解
- 沧州市2025年河北省沧州市事业单位招聘什么时候发布笔试历年参考题库典型考点附带答案详解
- 江北区2025年浙江江北区外滩街道公开招聘工作人员5人笔试历年参考题库典型考点附带答案详解
- 吉县2025山西临汾吉县紧缺高层次人才引进62人笔试历年参考题库典型考点附带答案详解
- 2026年儿童中毒预防与应急处置
- 光子集成混沌激光器的带宽与随机性研究报告
- 从“智人”到“数字人”
- DB11T 3032-2022 水利工程建设质量检测管理规范
- 媒体创意经济:玩转互联网时代学习通超星期末考试答案章节答案2024年
- 工程造价咨询服务投标方案(技术方案)
- GB/T 44299-2024探测器探测范围的测量方法和声明用于大和小运动探测的被动式红外探测器
- 《交通监控系统》课件
- 27.2.2相似三角形的性质教学设计人教版九年级数学下册
- GSTGM9000图形显示装置软件用户手册
- 明管结构计算书(Excel)
- 2023年同等学力申硕经济学综合历年真题及答案
- 《社会工作实务》初级社会工作师
评论
0/150
提交评论