已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
文件的作用 长期保存数据 程序与文件的关系 1 可通过程序来建立和更新文件内容 2 程序中处理的数据可以从文件中获得 10 1文件的基本概念 计算机可处理的文件 源程序 图形文件 音频文件 数据文件等等 按数据的组织形式可分为 文本文件 二进制文件 c语言可以对文本文件和二进制文件进行读写操作 c语言把每一个文件都看作是一个有序的字节流 流 是文件和程序之间通讯的通道 三种与文件关联的流 1 标准输入流 可读取来自键盘的数据 2 标准输出流 可把数据打印到屏幕上 3 标准错误流 可指出对文件的错误操作类型 缓冲文件系统 标准i o 每一个被打开的文件都会在内存开辟一个缓冲区 优越性 提高对数据的处理速度 减少对磁盘的读写次数 非缓冲文件系统 系统i o 系统不设置缓冲区 由程序设置 或称低层文件系统 优越性 灵活 高效 提醒 标准i o与系统i o分别采用不同的输入 输出函数 1 对文件操作所需的 文件信息 是一结构体变量 且该结构体变量由系统定义 typedefstruct shortleve1 unsignedflags charfd unsignedcharhold shortbsize unsignedchar buffer unsignedchar curp unsignedistemp shorttokem file 文件指针 定义形式 2 用户只需定义指向文件类型的指针变量即可 如 file fp1 fp2 3 系统对文件提供的信息有 缓冲区的状态 缓冲区中未被处理的字符个数 文件当前的读写位置 缓冲区的地址 缓冲区的大小 对任何文件的操作步骤 打开文件 关闭文件 读或写 10 2文件的基本操作 标准i o的读写函数 1 读写一个字符 fgetc fputc 2 读写一个字符串 fgets fputs 3 格式化读写变量 fscanf fprintf 4 格式化读写一个记录 块 fread fwrite 一 文件打开 使用fopen 函数 调用方式 若正确 则返回一个指向该文件的指针 若错误 则返回错误标志null fopen 文件名 文件操作方式 10 2 1建立顺序文件 r 以只读方式打开一个文本文件 w 以只写方式打开一个文本文件 a 以追加方式打开一个文本文件 r 以读 写方式打开一个文本文件 w 以读 写方式建立一个新的文本文件 a 以读 写方式打开一个文本文件 二 文件的打开模式 rb 以只读方式打开一个二进制文件 wb 以只写方式打开一个二进制文件 ab 以追加方式打开一个二进制文件 rb 以读 写方式打开一个二进制文件 wb 以读 写方式建立一个新的二进制文件 ab 以读 写方式打开一个二进制文件 includemain file p p fopen test txt r if p null printf fileopenerror n elseprintf fileopenok n 例 讨论 1 文件 test txt 所在位置如何 2 在程序结束之前如果没有关闭打开的文件 文件会不会遭到破坏 3 文件test txt的内容是什么 c语言规定 fopen 函数中的文件名可以是当前工作目录 相对路径 下的也可以是指定路径 绝对路径 下的 如 fopen c dos config sys r 三 文件关闭 使用fclose 函数 调用方式 作用 关闭一个已打开的文件 释放文件信息区 fclose 文件指针变量 上例的改进 includemain file p p fopen test txt r if p null printf fileopenerror n else 文件处理语句段 fclose fp 四 向文件中写数据的函数 对文件不论是读还是写 c程序只把文件看作是字节流 注意 1 向文件中写入数据时 若文件不存在 则系统会创建一个新文件 2 若文件已存在 则 以 w 方式打开文件时 文件原有内容在打开的同时会被冲掉 以 a 方式打开文件时 文件原有内容保留 向文件写入的内容插入到文件的尾部 1 向文件流中输入一个字符 charfputc charch file fp 若正确 返回字符ch 若错误 返回eof 2 向文件流中写入一个字符串 intfputs char s file fp 若正确 返回一个非负数 若错误 返回eof 3 按指定的格式向文件流中输入数据 fprintf file fp char fm 变量名表列 如 fprintf fp d f s a b w 格式字符串 与格式符对应的变量 例 编写一程序 把下面的内容写入文件mytest1 txt中 输入时以字符 作为结束 includemain file fp charch fp fopen mytest1 txt w if fp null printf fileopenerror n elsewhile ch getchar fputc ch fp fclose fp apple505 5pear404 4orange303 3 运行情况如下 例2 采用字符串输入方式将上面的内容输入到文件mytest2 txt中去 以不输入任何字符直接回车作为输入结束 apple505 5pear404 4orange303 3 include includemain file fp charw 20 fp fopen mytest2 txt w if fp null printf fileopenerror n elsewhile strlen gets w 0 fputs w fp fputs n fp fclose fp 1 若无此语句 程序的运行结果会是怎样的 2 怎样结束程序的运行 思考 输入的字符串的长度不要超过数组定义的大小 否则会出错 apple505 5 pear404 4 orange303 3 结果 查看当前目录下的mytest2 txt文件的内容 运行情况如下 例3 按指定输入格式把上面的内容输入到文件mytest3 txt中去 以任意单个字符作为输入结束 apple505 5pear404 4orange303 3 例 includemain file fp inta floatb charch w 20 fp fopen mystest3 txt w if fp null printf fileopenerror n else scanf s w while strlen w 1 scanf d f 运行情况如下 使用fputc fputs fprintf 可以达到同一个目的 17 2 2读取顺序文件中的数据 文件的结束标志 eof 1 从文件流中读取一个字符 fgetc fp 返回值 读取的字符 有三个重要的读函数 指向文件的指针 2 从文件流中读取一字符串 读一行字符 作用 从文件流中读取n 1字符 放入数组s中 fgets chars intn fp 返回值 s所指的字符串 数组名 n个字符数 文件指针变量 注意 1 第n个字符为系统加入的空字符 0 2 若在第n 1个字符前遇到换行符 停止读写 3 若遇到文件结束或调用出错 返回null 3 按指定格式从文件流中读取变量 fscanf 文件指针变量 格式控制符字符串 变量地址表列 作用 从文件流中按指定的格式 读取变量 并将读取的变量保存到对应的变量中 例 fscanf fp s d f name 文件指针变量 1 从文件中读 fread buffer size count fp 2 向文件中写 fwrite buffer size count fp 其中 buffer 数据存储的起始地址 size 要读写的字节数 count 读写的数据项 fp 文件指针变量 返回值 count的值 注意 使用fread fwrite来读写文件时 文件必须以二进制的方式打开 10 2 3按 记录 的方式读写 10 2 4随机存取文件 问题 要求打开文件后 对指定位置上的数据进行读写操作 减少一些不必要的中间环节 解决的办法 把文件指针移到指定的位置即可 关键步骤 文件的定位 一 文件定位函数 fseek 文件指针变量 位移量 起始点 注 1 起始点的取值只有3种 2 位移量 以起始点为基点移动的字节数 0 文件开始处 1 文件位置指针的当前位置 2 文件尾 3 位移量应为long型 4 fseek 的返回值 0 成功 非零 失败 例 fseek fp 20l 0 将位置指针移到离文件头20个字节处 fseek fp 10l 1 将位置指针移到离文件尾30个字节处 fseek fp 30l 2 将位置从当前位置向后移10个字节 注意 此处的20l是20和字母l 二 位置函数 ftell 文件指针变量 作用 返回文件指针的当前指向位置 返回值 0 文件指针的当前指向 1 出错 例 文件data1 txt的内容如下 thisisatest c语言程序设计 随机读写函数测试 要求编写一程序随机读出指定的记录 三 重新定位函数 rewind 文件指针变量 作用 使文件指针返回到文件的开头 无返回值 include includemain file fp intloc1 loc2 longd 8l charw fp fopen data1 txt r if fp null printf error n else loc1 fseek fp d 0 if loc1 0 w fgetc fp printf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏省南京市六合区2026年三上数学期末统考试题含解析
- 榆林市绥德县2027届六上数学期末检测试题含解析
- 182MW余热梯级利用项目可行性研究报告
- 居民健康素养知识竞赛试题及答案
- 备课任务梳理清单
- 核心人才长期培养准则
- 金属漆施工工艺
- 江苏新版内河小型船舶船员培训教材和考试题及答案
- 皮革厂污水处理细则
- 济南银行证券从业考试及答案
- 《健康饮食讲座》课件
- 肿瘤模型的建立
- Q-SY 17016-2024 压裂用驱油剂 磺酸盐类
- T/SHPTA 033-2022聚氯乙烯软制品用钙锌复合热稳定剂
- (高清版)DB13(J)∕T 8375-2020 城市智慧供热技术标准
- 高尿酸血症和痛风的护理
- DB37/T 1649-2010 特种设备制造、安装、改造、维修质量保证-质量管理体系 要求
- 教科版五年级上册科学全套教案(全册)打包下载教学计划及教学进度表
- 河北地质大学《数值分析》2023-2024学年第一学期期末试卷
- JGJ57-2016 剧场建筑设计规范
- 车辆报废代办委托协议
评论
0/150
提交评论