




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第13章文件 文件概述文件类型指针文件的打开与关闭文件的读写文件的定位出错的检测文件输入输出小结 13 1C文件概述文件 存储在外部介质上数据的集合 是操作系统数据管理的单位 使用数据文件的目的1 数据文件的改动不引起程序的改动 程序与数据分离2 不同程序可以访问同一数据文件中的数据 数据共享3 能长期保存程序运行的中间数据或结果数据 文件分类按文件的逻辑结构 记录文件 由具有一定结构的记录组成 定长和不定长 流式文件 由一个个字符 字节 数据顺序组成按存储介质 普通文件 存储介质文件 磁盘 磁带等 设备文件 非存储介质 键盘 显示器 打印机等 按数据的组织形式 文本文件 ASCII文件 每个字节存放一个字符的ASCII码二进制文件 数据按其在内存中的存储形式原样存放 文本文件特点 存储量大 速度慢 便于对字符操作 二进制文件特点 存储量小 速度快 便于存放中间结果 文件处理方法缓冲文件系统 高级文件系统 系统自动为正在使用的文件开辟内存缓冲区非缓冲文件系统 低级文件系统 由用户在程序中为每个文件设定缓冲区 13 2文件类型指针文件结构体FILE缓冲文件系统为每个正使用的文件在内存开辟文件信息区文件信息用系统定义的名为FILE的结构体描述FILE定义在stdio h中 typedefstruct shortlevel 缓冲区 满 或 空 的程度unsignedflags 文件状态标志charfd 文件描述符unsignedcharhold 如无缓冲区不读取字符shortbsize 缓冲区的大小unsignedchar buffer 数据缓冲区的位置unsignedchar curp 指针 当前的指向unsignedistemp 临时文件 指示器shorttoken 用于有效性检查 FILE 文件类型指针指针变量说明 FILE fp 用法 文件打开时 系统自动建立文件结构体 并把指向它的指针返回来 程序通过这个指针获得文件信息 访问文件文件关闭后 它的文件结构体被释放 13 3文件的打开与关闭C文件操作用库函数实现 库函数包含于stdio h 三个标准文件 标准输入 键盘stdin标准输出 显示器stdout标准出错输出 显示器stderr对这三个标准文件系统是自动打开和关闭 不需要语句来操作 对文件的读写应该按指定的操作方式打开打开文件使用方式 打开文件 文件读 写 关闭文件 打开文件fopen函数原型 FILE fopen char name char mode 功能 按指定方式打开指定的文件返值 正常打开 为指向文件结构体的指针 打开失败 为NULL 要打开的文件名 使用文件方式 例FILE fp fp fopen d sha bkc test dat r 例FILE fp char filename d sha bkc test dat fp fopen filename r 关于exit 函数1 用法 voidexit 程序状态值 2 功能 关闭已打开的所有文件 结束程序运行 返回操作系统 并将 程序状态值 返回给操作系统 当 程序状态值 为 时 表示程序正常退出 非 值时 表示程序出错退出 例文件打开与测试FILE fp fp fopen aa c r if fp NULL printf Fileopenerror n exit 0 说明 1 用带 r 的方式 r rb r rb 打开文件时 若文件不存在 则返回NULL指针 一般用以下方式检查是否成功打开 exit 0 是程序返回操作系统 文件关闭fclose作用 使文件指针变量与文件 脱钩 释放文件结构体和文件指针函数原型 intfclose FILE fp 功能 关闭fp指向的文件返值 正常关闭为0 出错时EOF 1 文件打开时返回的文件类型指针 不关闭文件可能会丢失数据 13 4文件的读写 文件打开之后 就可以对它进行读与写的操作了 1读 写文件中的一个字符2读 写一个字符串3读 写一个数据块4对文件进行格式化读 写 13 4文件的读写1 字符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 例13 1从键盘输入字符 逐个存到磁盘文件中 直到输入 为止 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 运行情况如下 computer 输入 computer 输出 同时写到文件out txt里 例读文本文件内容 并显示 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 判断文本文件是否结束 判断二进制文件是否结束while feof fp c fgetc 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 运行情况如下 file1 cfile2 c程序运行结果 将file1 c文件中的内容复制到file2 c中去 2 数据块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一般用于二进制文件的输入 输出 2 数据块读写函数 fread 和fwrite 函数调用 fread buffer size count fp fwrite buffer size count fp 参数说明 buffer 是一个指针 对fread来说 它是读入数据的存放首地址 对fwrite来说 是要输出数据的存放首地址 size 每个要读 写的数据块的大小 字节数 count 要读 写的数据块的个数fp 用来读写的文件型指针 fread与fwrite一般用于二进制文件的输入 输出 例floatf 10 FILE fp fp fopen d sha aa dat rb fread f 4 2 fp 文件以二进制读形式打开 此函数从fp所指向的文件d sha aa dat中读入2个块长4个字节的数据 存储到数组f中 for i 0 i 2 i fread 例structstudent intnum charname 20 charsex intage floatscore 3 stud 10 for i 0 i 10 i fread 例13 3从键盘输入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 再从stu dat中读 voidsave 从内存数组stud写入到文件stu dat中 FILE fp inti if fp fopen d sha 1 stu dat wb NULL printf cannotopenfile n return for i 0 i SIZE i if fwrite voiddisplay 再从stu dat中读到内存数组stud中 FILE fp inti if fp fopen d sha 1 stu dat rb NULL printf cannotopenfile n return for i 0 i SIZE i fread 3 格式化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 4 字符串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 13 5文件的定位几个概念文件位置指针 指向当前读写位置的指针读写方式顺序读写 位置指针按字节位置顺序移动 叫 随机读写 位置指针按需要移动到任意位置 叫 1 rewind函数函数原型 voidrewind FILE fp 功能 重置文件位置指针到文件开头返值 无 例对一个磁盘文件进行显示和复制两次操作 includemain FILE fp1 fp2 fp1 fopen d sha bk 4 c r fp2 fopen d sha bk 41 c w while feof fp1 putchar getc fp1 rewind fp1 while feof fp1 putc getc fp1 fp2 fclose fp1 fclose fp2 2 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 3 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 filenotfoun
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 内蒙古呼伦贝尔农垦集团有限公司招聘笔试题库及答案详解(名校卷)
- 教师招聘之《小学教师招聘》综合练习附参考答案详解【研优卷】
- 2025年内蒙古呼伦贝尔农垦牙克石莫拐免渡河农牧场有限公司招聘笔试参考题库附答案详解(黄金题型)
- 教师招聘之《幼儿教师招聘》考前冲刺训练试卷附参考答案详解【b卷】
- 教师招聘之《小学教师招聘》考试押题密卷附答案详解【培优b卷】
- 教师招聘之《幼儿教师招聘》考前冲刺练习题及参考答案详解(培优)
- 2025年教师招聘之《小学教师招聘》练习题包含答案详解【培优b卷】
- 2025年教师招聘之《幼儿教师招聘》题库及答案详解(网校专用)
- 2025年教师招聘之《小学教师招聘》题库检测试卷及完整答案详解(典优)
- 教师招聘之《小学教师招聘》检测卷讲解【夺分金卷】附答案详解
- 2025年医院药师职业技能大赛试题(附答案)
- 筠连王点科技有限公司3万吨-年复合导电浆料配套10吨-年碳纳米管粉体项目环评报告
- 2025年江苏省档案职称考试(新时代档案工作理论与实践)历年参考题库含答案详解(5套)
- 肥胖症诊疗指南(2024年版)解读
- 《焊接结构生产》课件-第一单元 焊接结构生产基础知识
- 烟草局联合快递企业开展涉烟寄递违法行为培训
- 2025年全国“质量月”质量知识竞赛题库及答案
- 污水处理厂处理设施设备更新改造工程项目可行性研究报告(参考模板)
- 机制砂石骨料工厂设计规范2025年
- 股癣护理课件
- 土方开挖培训课件
评论
0/150
提交评论