




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 第十一章文件 11 1C文件概述文件 存储在外部介质上数据的集合 是操作系统数据管理的单位 使用数据文件的目的1 数据文件的改动不引起程序的改动 程序与数据分离2 不同程序可以访问同一数据文件中的数据 数据共享3 能长期保存程序运行的中间数据或结果数据 文件分类按文件的逻辑结构 记录文件 由具有一定结构的记录组成 定长和不定长 流式文件 由一个个字符 字节 数据顺序组成按存储介质 普通文件 存储介质文件 磁盘 磁带等 设备文件 非存储介质 键盘 显示器 打印机等 按数据的组织形式 文本文件 ASCII文件 每个字节存放一个字符的ASCII码二进制文件 数据按其在内存中的存储形式原样存放 2 文件处理方法缓冲文件系统 高级文件系统 系统自动为正在使用的文件开辟内存缓冲区非缓冲文件系统 低级文件系统 由用户在程序中为每个文件设定缓冲区 3 11 2文件类型指针文件结构体FILE缓冲文件系统为每个正使用的文件在内存开辟文件信息区文件信息用系统定义的名为FILE的结构体描述FILE定义在stdio h中 typedefstruct int fd 文件号int cleft 缓冲区中剩下的字符数int mode 文件操作方式char next 文件当前读写位置char buff 文件缓冲区位置 FILE 4 文件类型指针指针变量说明 FILE fp 用法 文件打开时 系统自动建立文件结构体 并把指向它的指针返回来 程序通过这个指针获得文件信息 访问文件文件关闭后 它的文件结构体被释放 5 11 3文件的打开与关闭C文件操作用库函数实现 包含在stdio h中文件使用方式 打开文件 文件读 写 关闭文件系统自动打开和关闭三个标准文件 标准输入 键盘stdin标准输出 显示器stdout标准出错输出 显示器stderr打开文件fopen函数原型 FILE fopen char name char mode 功能 按指定方式打开文件返值 正常打开 为指向文件结构体的指针 打开失败 为NULL 要打开的文件名 使用文件方式 例文件打开与测试FILE fp fp fopen aa c w if fp NULL printf Fileopenerror n exit 0 例FILE fp fp fopen c example test dat r 例FILE fp char filename c example test dat fp fopen filename r 6 文件关闭fclose作用 使文件指针变量与文件 脱钩 释放文件结构体和文件指针函数原型 intfclose FILE fp 功能 关闭fp指向的文件返值 正常关闭为0 出错时 非0 文件打开时返回的文件类型指针 不关闭文件可能会丢失数据 7 11 4文件的读写字符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 8 判断二进制文件是否结束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 9 数据块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一般用于二进制文件的输入 输出 10 例从键盘输入4个学生数据 把它们转存到磁盘文件中去 include defineSIZE4structstudent 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 example 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 example exe stu dat rb NULL printf cannotopenfile n return for i 0 i SIZE i fread 11 字符串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 12 11 5文件的定位几个概念文件位置指针 指向当前读写位置的指针读写方式顺序读写 位置指针按字节位置顺序移动 叫 随机读写 位置指针按需要移动到任意位置 叫 rewind函数函数原型 voidrewind FILE fp 功能 重置文件位置指针到文件开头返值 无 例对一个磁盘文件进行显示和复制两次操作 includemain FILE fp1 fp2 fp1 fopen d example bkc ch12 4 c r fp2 fopen d example bkc ch12 41 c w while feof fp1 putchar getc fp1 rewind fp1 while feof fp1 putc getc fp1 fp2 fclose fp1 fclose fp2 13 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学生数据并显示 include stdio h main FILE fp charfilename 80 longlength gets filename fp fopen filename rb if fp NULL printf filenotfound n else fseek fp 0L SEEK END length ftell fp printf LengthofFileis 1dbytes n length fclose fp 例求文件长度 14 11 6出错的检测ferror函数函数原型 intferror FILE fp 功能 测试文件是否出现错误返值 未出错 0 出错 非0说明每次调用文件输入输出函数 均产生一个新的ferror函数值 所以应及时测试fopen打开文件时 ferror函数初值自动置为0 15 clearerr函数函数原型 voidclearerr FILE fp 功能 使文件错误标志置为0返值 无说明 出错后 错误标志一直保留 直到对同一文件调clearerr fp 或rewi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全教育课件
- 女巫帽儿童课件
- 2025合同范本房地产租赁合同协议样本
- 2025正式的个人借款合同协议
- 2025企业办公室物业委托管理合同标准版样式
- 货运练习试题附答案
- 颈部神经源性肿瘤诊治进展
- 2025-2030素食辣味粉市场投资前景分析及供需格局研究研究报告
- 2025-2030中国桥梁钢结构行业深度调研及投资前景预测研究报告
- 2025-2030中国八宝粥行业深度调研及投资前景预测研究报告
- (高清版)DB11∕T2279-2024社会单位消防安全评估规范
- 石碏谏宠州吁
- 2025年江苏省苏州市中考历史复习精练卷(中国古代史) 含答案
- 浙江省建设工程检测技术人员(建筑材料及构配件)认证考试题库(含答案)
- 四川省攀枝花市重点名校2025届中考生物押题卷含解析
- 员工住厂外免责协议书(2篇)
- 2024年淮南市第一人民医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- 93J007-7道路图集(正式版)
- 《禽生产》课程标准
- 6月26国际禁毒日防范青少年药物滥用禁毒宣传课件
- 法务部新员工法律培训
评论
0/150
提交评论