




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
公共计算机基础教研部 第10章文件操作 公共计算机基础教研部 本章要点 文件的基本概念文件的基本函数文件的顺序读写文件的随机读写文件的简单应用 公共计算机基础教研部 10 1C文件的有关概念 字符界面的操作系统一般都提供标准输入与输出设备DOS Linux Unix 一般情况 标准输入就是键盘 标准输出就是终端显示器操作系统有能力重定向标准输入与输出 比如让文件作为标准输入 打印机作为标准输出这种重定向程序本身是感觉不到的 自来水厂 公共计算机基础教研部 计算机的内存容易健忘 所以数据必须保存在硬盘 软盘 光盘和磁带等 不健忘 的外存上这些能大量 永久保存信息的媒介 一般都以文件的形式给用户及应用程序使用 操作系统是以文件为单位对数据进行管理的 文件一般指存储在外部介质上具有名字 文件名 的一组相关数据的集合用文件可长期保存数据 并实现数据共享程序中的文件在程序运行时由程序在磁盘上建立一个文件 并通过写操作将数据存入该文件 或由程序打开磁盘上的某个已有文件 并通过读操作将文件中的数据读入内存供程序使用 公共计算机基础教研部 文件的存放 可以建立若干目录 文件夹 在目录里保存文件 同一级目录里保存的文件不能同名 对使用者而言 只要知道文件的路径 全目录 和文件名 就能使用该文件D home Sunner main c这都是托OS的福 公共计算机基础教研部 文件的格式 二进制文件是一种字节序列 没有字符变换按照数据在内存中的存储形式存储到文件如整数127 在内存占2个字节 为0000000001111111 则文件中也存储为0000000001111111 占2个字节文本文件 ASCII码文件是一种字符序列文件中存储每个字符的ASCII码如整数127在文件中占3个字节 分别存放这3个字符的ASCII码 即49 50 55 公共计算机基础教研部 文件的格式 数据必须按照存入的类型读出 才能恢复其本来面貌公开的标准格式如bmp tif gif jpg和mp3等类型的文件 有大量软件能生成和使用这些类型的文件也有不公开 甚至加密的文件格式如MicrosoftWord的doc格式就不公开 所以至今还没有Word以外的其它软件能完美地读出doc文件 公共计算机基础教研部 文件指针 FILE fp 是FILE型指针变量标识一个特定的磁盘文件与文件相关联的每个流都有一个FILE类型的控制结构 定义有关文件操作的信息 用户绝对不应修改 10 1 5文件指针 公共计算机基础教研部 文件指针 FilePointer typedefstruct shortlevel 缓冲区 满 或 空 的程度 unsignedflags 文件状态标志 charfd 文件描述符 unsignedcharhold 如无缓冲区不读字符 shortbsize 缓冲区的大小 unsignedchar buffer 数据缓冲区的位置 unsignedchar curp 指针当前的指向 unsignedistemp 临时文件指示器 shorttoken 用于有效性检查 FILE 在stdio h文件中定义 公共计算机基础教研部 10 1 6文件的位置指针 位置指针用来指示当前的读写位置 一般情况下 在对字符文件进行顺序读写时 文件的位置指针指向文件开头 这时如果对文件进行读的操作 就读第一个字符 然后文件的位置指针顺序向后移一个位置 在下一次执行读的操作时 就将指针指向的第二个字符读入 依此类推 直到遇文件尾 文件头读写当前位置文件尾 公共计算机基础教研部 10 1 6文件的位置指针 文件头读写当前位置文件尾 有时希望在一个文件的原有数据之后再添加新的数据 应该把文件位置指针移到文件尾 然后再接着写入新的数据 这就是文件的追加 公共计算机基础教研部 10 2文件的打开与关闭 10 2 1文件的打开 下面介绍的函数均定义在中FILE fopen constchar filename char mode 如 FILE fp fopen C CONFIG SYS rw filename是文件名 包含路径 如果不含路径 表示打开当前目录下的文件mode是打开方式 常用为 r w a 分别表示只读 只写 和添加返回值为指向此文件的指针 留待以后使用 如果打开失败 返回值为NULL mode 公共计算机基础教研部 应用举例 FILE fp fp fopen e sun txt w FILE fp fp fopen temp c r FILE fp fp fopen d tc temp a dat rb FILE fp fp fopen play cpp a 若要打开E盘上user子目录下名为abc txt的文本文件进行读 写操作 下面符合此要求的函数调用是 A fopen E user abc txt r B fopen E user abc txt r C fopen E user abc txt rb D fopen E user abc txt w 例如 fp fopen d sqs a1 txt r fopen函数返回指向文件a1 txt的指针并赋给fp 即fp指向文件a1 txt 若不能实现打开任务 fopen函数将带回一个空指针值NULL 值为0 常用打开文件的方法为 if fp fopen a1 txt r NULL printf cannotopenthisfile n exit 0 公共计算机基础教研部 10 2文件的打开与关闭 10 2 2文件的关闭 函数调用 fclose 文件指针 函数功能 使文件指针变量不指向该文件 也就是文件指针变量与文件 脱钩 此后不能再通过该指针对原来与其相联系的文件进行读写操作返回值 关闭成功返回值为 否则返回EOF 1 公共计算机基础教研部 ch fgetc fp fgetc和fputc函数 fputc ch fp 把字符ch写到fp所指向的文件中去 10 3 1向文件读写一个字符 10 3文件的顺序读写 如果写入错误返回EOF 否则则返回ch 从fp所指向的文件读出一个字符 返回给ch 若读到文件末尾返回EOF EOF 在stdio h中定义的符号常量 宏名 表示文件结束 defineEOF 1 注 每次读 写 文件指针自动向前移动1个字节 即指向下一个读 写位置 公共计算机基础教研部 例 将键盘输入的字符顺序存入磁盘文件tt txt中 输入ctrl z结束 include stdio h main charc FILE fp fp fopen tt txt w c getchar while c EOF fputc c fp c getchar fclose fp 程序文件名为f1 c 程序运行结果是生成文件tt txt 公共计算机基础教研部 例 从文件tt txt中顺序读取字符并显示出来 include stdio h main charc FILE fp fp fopen tt txt r c fgetc fp while c EOF putchar c c fgetc fp fclose fp 公共计算机基础教研部 判断二进制文件是否结束while feof fp c fgetc fp includemain FILE in out charch in fopen e sun abc txt rb out fopen e sun abc bak wb while feof in ch fgetc in fputc ch out fclose in fclose out fputc fgetc in out 公共计算机基础教研部 下面的程序执行后 文件test t中的内容是 includevoidfun char fname char st FILE myf inti myf fopen fname w for i 0 i strlen st i fputc st i myf fclose myf main fun test t newworld fun test t hello A hello B newworldhello C newworldD hello rld 公共计算机基础教研部 08年4月国二考题以下程序从名为filea dat的文本文件中逐个读入字符并显示在屏幕上 请填空 includemain FILE fp charch fp fopen ch fgetc fp whlie feof fp putchar ch ch fgetc fp putchar n fclose fp 公共计算机基础教研部 10 3 3向文件进行格式化读写 将输出项arg1 arg2 argn按指定format格式写入fp所指的文件中 即输出到磁盘文件 格式 fprintf fp format arg1 arg2 argn 格式 fscanf fp format fscanf函数 fprintf函数 按指定format格式从fp所指的文件中读取数据依次送入arg1 arg2 argn的内存单元 arg1 arg2 argn arg1 arg2 argn 输出 输入项表列 format 为格式字符串 fp 为指向fopen函数打开的文件的指针 10 3文件的顺序读写 公共计算机基础教研部 读程序 写结果 includemain FILE fp inti 5 floatx 3 14 fp fopen e exam txt w fprintf fp i d x f i x fclose fp 读程序 写结果 includemain FILE fp inti floatx fp fopen e exam txt r fscanf fp d f 假定 e盘下有一文件exam txt 内容为 23 5 fscanf fp d f 若换成此语句 程序结果会怎样 公共计算机基础教研部 09年3月国二考题有以下程序 includemain FILE f f fopen filea txt w fprintf f abc fclose f 若文本文件filea txt中的原有内容为 hello 则运行以上程序后 文件filea txt中的内容为A helloabcB abcloC abcD abchello 公共计算机基础教研部 08年4月国二考题以下程序的运行结果是 includemain FILE fp inta 10 1 2 3 i n fp fopen dl dat w for i 0 i 3 i fprintf fp d a i fprintf fp n fclose fp fp fopen dl dat r fscanf fp d A 12300B 123C 1D 321 公共计算机基础教研部 程序运行后的输出结果是 includemain FILE fp inti 20 j 30 k n fp fopen d1 dat w fprintf fp d n i fprintf fp d n j fclose fp fp fopen d1 dat r fp fscanf fp d d A 2030B 2050C 3050D 3020 公共计算机基础教研部 10 3 4向文件读写一组数据 10 3文件的顺序读写 fwrite 函数的功能 将内存中的一组数据写到fp所指向的文件中 按照内存中的存储形式输出 为二进制文件 fwrite buff size count fp 所要写入文件的数据在内存中的起始地址 写入文件的每个数据项的字节数 写入文件的数据项数 指向写入文件的指针 函数调用成功返回count的值 否则返回 1 公共计算机基础教研部 10 4 2读写 fread buff size count fp fread 函数 在fp所指向的文件中读取一组数据并将其放到内存中去 函数调用成功返回count的值 否则返回 1 待读文件的数据在内存中的起始地址 从文件读入的每个数据项的字节数 从文件读入的数据项数 指向待读文件的指针 10 3 4向文件读写一组数据 公共计算机基础教研部 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 公共计算机基础教研部 includemain charc FILE fp fp fopen e sun a txt wb for c a c z c fwrite 公共计算机基础教研部 08年9月国二考题有以下程序 includemain FILE pf char s1 China s2 Beijing pf fopen abc dat wb fwrite s2 7 1 pf rewind pf 文件位置指针回到文件头 fwrite s1 5 1 pf fclose pf 以上程序执行后abc dat文件的内容是 A ChinaB ChinangC ChinaBeijingD BeijingChina 公共计算机基础教研部 10 4文件的随机读写 文件指针 打开的文件中有一个位置指针指示动迁的读写位置 对文件每进行一次读写 文件指针自动指向下一个读写位置 则可方便地进行顺序读写 利用定位函数还可实现随机读写 fp为指向fopen函数打开的文件的指针 rewind 函数 功能 使文件指针重新指向文件的开头位置 此函数没有返回值 形式 rewind fp 公共计算机基础教研部 对一个磁盘文件进行显示和复制两次操作 includemain FILE fp1 fp2 charch fp1 fopen d sun a txt r fp2 fopen d sun aa bak w while ch fgetc fp1 EOF putchar ch rewind fp1 while ch fgetc fp1 EOF fputc fgetc fp1 fp2 fclose fp1 fclose fp2 公共计算机基础教研部 fp 为指向fopen函数打开的文件的指针 offset 文件指针的位移量 字节数 long型 加l或L from 起始位置0 文件开始1 当前位置2 文件末尾 fseek 函数 利用该函数可以改变文件指针的位置 从而实现随机读写 形式 fseek fp offset from ftell 函数 取得文件指针的当前位置 用字节数 long类型 位移量 以起始点为基点 移动的字节数 0向后移动 0向前移动 起始点文件开始SEEK SET0文件当前位置SEEK CUR1文件末尾SEEK END2 例fseek fp 100L 0 fseek fp 50L 1 fseek fp 10L 2 10 4文件的随机读写 公共计算机基础教研部 include stdio h main FILE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年神经外科手术并发症防治综合考核答案及解析
- 民族团结课件模板
- 2025年肾脏内科慢性肾病营养支持测试答案及解析
- 2025年产科护理常见病例分析模拟考试答案及解析
- 京东自营与新质生产力解读
- 2025年肝胆胰腺外科胰腺炎急性期护理知识考核模拟卷答案及解析
- 2025年影像与核医学检查操作技能考核答案及解析
- 2025年感染病学防控知识综合考试卷答案及解析
- 洞察新质生产力发展脉动
- 2025年耳鼻喉科急救处理能力考核答案及解析
- 《怎样画科幻画》课件
- 2024-2030年中国游艇行业发展前景预测及投资规划研究报告
- 2024年国家公务员考试《行测》真题卷(副省级)答案及解析
- 2024-2025学年陕西省西安市高新一中高一(上)第一次月考数学试卷(含答案)
- 新能源发电技术 课件 第一章-新能源发电概述
- 《智能网联汽车运行与维护》中职技工全套教学课件
- 《遥感原理与应用》全册配套完整课件
- 麻醉科医师晋升副主任医师病例分析专题报告三篇
- 智能云服务交付工程师认证考试题库(网大版)-中(多选题)
- 中医医疗技术手册2013普及版
- 古仁人之心作文共九篇
评论
0/150
提交评论