




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章文件 一目的和要求一目的和要求 1、掌握文件的基本概念,如:文件的输入/输出的基本概念、文件的两种组织形式、 文件操作的一般步骤等等。 2、学习文件操作的基本算法,如:读/写、追加等。 3、了解文件的读写方式,如:顺序读写文件、随机读写文件。 4、了解如何将不同的数据(如:数组数据、结构体数据)存入或读出文件的方法。 二相关知识二相关知识 1、文件概述 文件的组织形式 C 把文件看作是字符(字节)的序列,即由一个一个字符数据顺序组成的。根据数 据的组织形式,可分为 ASCII 文件和二进制文件。 ASCII 文件又称文本文件。它的每一个字节放一个 ASCII 代码(代表一个字符) 。 因而便于对字符进行逐个处理,也便于输出字符。但一般占存储空间较多,而且化 费转换时间。 2二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存 放。但一个字节并不对应一个字符。不能直接输出字符形式。 文件的处理方法 1缓冲文件系统:系统自动地在内存区为每一个正在使用的文件开辟一个缓冲区。 从内存向磁盘输出数据必须先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘 去。 如果从磁盘向内存读入数据, 则从磁盘文件中将一批数据输入到内存缓冲区 (充 满缓冲区) ,然后再从缓冲区逐个地将数据送到程序数据区(给程序变量) 。 用缓冲文件系统进行的输入输出又称为高级(高层)磁盘输入输出。 非缓冲文件系统:系统不自动开辟缓冲区,系统直接对磁盘写或读数据。 用非缓冲文件系统进行的输入输出又称为低级(低层)磁盘输入输出系统。 文件的存取方式 C 语言对文件的操作都是通过文件处理函数实现的。用文件处理函数存取文件的方 式有两种,一种是顺序存取(顺序文件) ,另一种是随机存取(随机文件) 。 设备文件 由于计算机中的输入/输出设备的作用也是输入输出数据, 所以把输入/输出设备也看 成文件,称为设备文件。 微机上配备的常用输入设备是键盘,称标准输入设备;常用输出设备是显示器,称 标准输出设备;还有一个专用于输出错误信息的标准错误输出设备,也是显示器。 2、文件型指针 C 语言规定文件类型是一种特殊的“结构型”FILE,对这个结构类型 FILE,系统已 经在头文件“stdio.h”中进行了定义。 3、操作文件的常用函数 打开文件函数 open() 关闭文件函数 close() 文件尾测试函数 feof() 字符读/写函数 fgetc()/fputc() 字符串读/写函数 fgets()/fputs() 数据读/写函数 fread()/fwrite() 格式读/写函数 fscanf()/fprintf() 文件头定位函数 rewind() 文件随机定位函数 fseek() 10错误测试函数 ferror() 三实验练习实验练习 实验练习实验练习 1 1:编写程序,模拟 DOS 的 type 命令,显示文本文件的内容。 本练习要求在封闭式实验课中在助教或者讲师的指导下完成。 本练习分成 6 个部分: 1 实验目的 2 问题描述 3 事例输出 4 程序模板 5 问题解答提示 6 后续问题和任务 程序模板是完整的、可实际运行的 C 程序,其中关键的一行或者多行代码已经 替换为注释。请先阅读问题描述,分析事例输出;然后研究模板的代码。参考问题 解答提示,用 C 代码替换/* */注释。编译并执行程序,并将输出结果与提供的事例 输出进行比较。然后回答强化练习。 实验目的: 本实验旨在巩固学生对文件概念的理解,增强程序设计能力。在这个实验中, 学生将练习: 用包含命令将头文件”stdlib.h”包含进来。 设置带参数的主函数。 设置文件类型的指针 fp。 if 语句判断,若命令行的参数少于 2 个,则输出“No file name.“,退出程序。 用 fopen()函数以读方式打开文件,若打不开,则输出“No such file.“,退出程 序。 利用循环语句,若没有读到文件结束 EOF,依次从文件中读出字符并显示在屏 幕上。 关闭文件。 在强化练习中,学生将练习: 设置无参的主函数,显示指定文件。 利用 fgets()函数读取文件中的字符串,完成类似功能。 利用 fgetc()函数和 fputc()函数,模拟 DOS 的 copy 命令。 利用 fgets()函数和 fputs()函数,模拟 DOS 的 copy 命令。 问题描述 编写程序,用带参数的主函数接收从命令行中传来的文件,将该文件以读方式 打开,然后用 fgetc( )函数将字符一个个读出,显示在屏幕上。 示例输出 D: pro10_1pro_1.c #include “stdio.h” void main( ) int a=3, b=4, c; c=a+b; printf(“c=%dn”, c); 注:设有文件 pro_1.c,其内容为: #include “stdio.h” void main( ) int a=3, b=4, c; c=a+b; printf(“c=%dn”, c); 程序模板(设此程序的程序名为:pro10_1.c) #include “stdio.h“ #include “stdlib.h“ void main(_, _) /*定义文件类型的指针 fp*/ char ch; if(argc=a char name10; char sex; int age; stuSIZE,out; void main( ) FILE *fp; int i; for(i=0;iSIZE;i+) printf(“Input student %d:“,i+1); /*从键盘输入学生的一组数据*/ if(以二进制写方式打开文件 student.dat,若能打开,则使 文件指针 fp 指向该文件的信息区) printf(“Cannot open file.n“); abort( ); for(i=0;iSIZE;i+) /*用 fwrite()函数将学生的记录写入文件 student.dat 中*/ fclose(fp); fp=fopen(“student.dat“, “rb“); printf(“NoNameSexAgen“); for(i=0; iSIZE; i+) /*用 fread()函数,从文件 student.dat 中读取一条记录存入 out 中*/ printf(“%-5s %-10s %c %dn“, out.num,, out.sex, out.age); /*关闭文件*/ 问题解答提示 1二进制文件是由一串与内存存放形式相同的字节组成。它不需要转换就从内存送 到文件中存放起来。 2打开文件函数 fopen()中的第二个参数是文件打开方式。是“wb“时是二进制写方 式打开文件,“rb“时是二进制读方式打开文件。 3fread()函数和 fwrite()函数的第一个参数是读取数据暂存区的地址,要用取地址运 算符 char name10; char sex; int age; out; void main() FILE *fp; int i; if(fp=fopen(“student.dat“,“rb“)=NULL) printf(“Cannot open file.n“); /*退出程序*/ printf(“请输入学生的序号:“); scanf(“%d“, /*将文件指针重定位至文件的开头处*/ /*将文件指针定位在待查找的记录上*/ fread( printf(“%s %s %c %dn“,out.num,,out.sex,out.age); /*关闭文件*/ 问题解答提示 1若不知文件指针指向何处,用重定位函数,将文件指针 fp 重新指向文件的开头 处。 2fseek()函数中的第三个参数是移动文件指针时的起始位置。为 0 时,表示文件指 针在文件的开始处;为 1 时,表示文件指针在当前文件指针位置;为 2 时,表示文 件指针在文件尾。 3 fseek()函数中的第二个参数是移动到距起始位置为多少条记录的地方, 即偏离量。 计算方法是:(i-1)* sizeof(struct student)。第一条记录的偏离量是 0,所以要 i-1。 4若偏离量大于 0,表示文件指针向文件尾移动;若偏离量小于 0,表示文件指针 向文件头移动 5如果在实验中碰到任何问题,请向实验老师寻求帮助。 强化练习 1重新编写程序,输出序号为偶数的学生的记录。 2重新编写程序,按逆序输出学生的记录。 10.4 综合练习综合练习 1编写程序,将 33126 之间的所有字符写入文件 chars.txt 中。 #include “stdio.h“ #include “stdlib.h“ void main() FILE *fp; int ch; if(fp=fopen(“chars.txt“,“w“)=NULL) printf(“file open error!n“); exit(0); for(ch=33;ch=126;ch+) fputc(ch,fp); fclose(fp); 2在磁盘文件上存有 10 个学生的数据。要求将第 1、3、5、7、9 个学生数据输入 计算机,并在屏幕上显示出来。 #include “stdio.h“ struct student char name10; int num; int age; char sex; stud10; void main() int i; FILE *fp; if(f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年新能源行业技术创新在新能源设备智能化创新中的技术突破报告
- 2025河北唐山曹妃甸唐海中医医院招聘考试参考题库及答案解析
- 2025年金华市婺城区第一人民医院招聘工作人员3人备考考试题库附答案解析
- 2025江西南昌市社会福利院面向社会招聘20人考试参考题库及答案解析
- 2025年合肥肥东县新安江路小学招聘教师补招考试参考题库及答案解析
- 物业维修保养合同范本
- 2025江苏无锡市教育局直属单位选聘事业单位人员10人(二)考试参考题库及答案解析
- 2025河南才港人力资源服务有限公司项目服务人员招聘8人考试参考题库及答案解析
- 2025年淮南市第四人民医院补充招聘劳务外聘护理、康复岗考试参考题库及答案解析
- 建筑质量管理自查报告行业标准
- 手术授权申请表
- 2023年度全国出版专业技术人员职业资格考试-基础知识(初级)试题
- 2023届高考语文备考之整句与散句变换(10道真题含答案)
- 灌注桩后注浆施工记录
- 食品样品的采集和预处理-食品样品的采集与制备
- 幼儿园大班语言绘本《月亮的味道》课件
- 昆明元朔建设有限公司高速收费岗位笔试题
- 2023医疗机构信息系统等级保护定级工作指南
- 住宅大门经典对联带横批100条-最佳大门风水对联
- SWITCH暗黑破坏神3超级金手指修改 版本号:2.7.4.84040
- 医疗机构药事管理与法规
评论
0/150
提交评论