版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、广州大学学生实验报告开课学院及实验室:计算机科学与工程实验室 2015 年12 月8日实验课程名称操作系统实验成绩实验项目名称实验4 文件系统指导老师陈康民一、实验目的1. 对文件管理有进一步了解2. 利用文件备份实验加深对文件管理的了解3. 熟悉fopen()、fread()、 fwrite()、fclose() 的使用二、实验内容利用函数fopen(), fread(), fwrite(), fclose() 来实现简单的文件备份, 即将一个文件的内容拷贝到另一个文件中去。三、实验原理利用函数fopen(), fread(), fwrite(), fclose() 来实现简单的文件备份四、
2、实验设备PC(操作系统:Fedora,含GCC)五、实验要求完成利用函数fopen(), fread(), fwrite(), fclose() 来实现简单的文件备份, 即将一个文件的内容拷贝到另一个文件中去。并进行分析参考程序提供错误解决方案。六、实验程序9.c:#include #include #include int main(void)char buf; /建立缓冲区FILE *source, *backup; /设立FILE结构指针if (source = fopen(source.dat, r) = NULL) /若以只读形式source.dat成功打开,则fopen()返回FI
3、LE指针sourceprintf(Error in opening file.n);exit(1);if (backup = fopen(backup.dat, w) = NULL) /若以只写形式backup.dat无法打开,则创建文件不成功printf(Error in creating file.n);exit(1);while (fread(&buf, sizeof(buf), 1, source) = 1) /用fread函数读取source的一个buf大小的数据到缓冲区if (fwrite(&buf, sizeof(buf), 1, backup) = 0) /用fwrite函数把
4、一个buf大小的缓冲区数据写入backup/若写入错误,则打印“写入文件错误”printf(Error in wrinting file.n);exit(1);if (ferror(source) /读取文件source出现错误 printf(Error in reading file.n);exit(1);if (fclose(source) /source流的关闭出现错误printf(Error in close file.n);exit(1);if (fclose(backup) /backup流的关闭出现错误printf(Error in close file.n);exit(1);r
5、eturn 0;9.c结果截图实验结果1:源文件source.dat内容如下: 编译运行后多了个Backup.dat文件实验分析1:此方案1,用char buf;重新定义缓冲区,程序中if (!(source = fopen(source.dat, r)和if (!(backup = fopen(backup.dat, w)中的表达式虽然没有错误,但这种写法不太好,因fopen()返回的是一个地址或者空值,这样写会影响程序的可读性,同时在某些机器上可能引发错误,所以改为if (source = fopen(source.dat, r) = NULL)和if (backup = fopen(ba
6、ckup.dat, w) = NULL)。因为将缓冲区改为char buf;,所以fread(buf, sizeof(buf), 1, source)和fwrite(buf, sizeof(buf), 1, backup)应改为fread(&buf, sizeof(buf), 1, source)和fwrite(&buf, sizeof(buf), 1, backup),同时while循环的循环体内if的条件表达式的判断也是错误的,应改为fwrite(&buf, sizeof(buf), 1, backup) = 0,后面if (ferror(source) = 0)和if (!fclose(
7、source)的判断也是错误的,应改为if (ferror(source)和if (fclose(source),具体修改的地方请查看上面实验程序1中字体加粗的部分和相应注释。此方案实际上是每次只读/写一个字节,虽然可以实现正确备份文件,但明显不能达到要求,所以进行方案2的实验。方案2 程序如下:#include #include #include #define BUF_SIZE 1024int main(void)char bufBUF_SIZE;FILE *source, *backup;if (source = fopen(source.dat, r) = NULL) /若以只读形式s
8、ource.dat成功打开,则fopen()返回FILE指针sourceprintf(Error in opening file.n);exit(1);if (backup = fopen(backup.dat, w) = NULL) /若以只写形式backup.dat无法打开,则创建文件不成功printf(Error in creating file.n);exit(1);int readbytes = 0; /存取已读取的字节数while (readbytes = fread(buf, sizeof(char), BUF_SIZE, source) 0) /若读入的字符大于0,循环读写fw
9、rite(buf, sizeof(char), readbytes, backup); /写入文件if (ferror(backup) /判断是否出现写入错误,若写入错误,则打印“写入文件错误”printf(Error in wrinting file.n);exit(1);if (ferror(source) /读取文件source出现错误 printf(Error in reading file.n);exit(1);if (fclose(source) /source流的关闭出现错误printf(Error in close file.n);exit(1);if (fclose(back
10、up) /backup流的关闭出现错误printf(Error in close file.n);exit(1);return 0;实验结果:第一次调试:第二次调试:在第一次的基础上添加内容使得源文件的内容增多,文件大小变成2.3kb实验分析2:此方案2中,仍然用char bufBUF_SIZE;定义一个1024字节大小的缓冲区,其它微小改动和方案1一致,主要修改是while循环:int readbytes = 0; /定义一个变量来存取已读取的字节数while (readbytes = fread(buf, sizeof(char), BUF_SIZE, source) 0) /*在这里,fread()函数是从一个文件流中读数据,最多读取1024个元素,也就是最多填满缓冲区,每个元素1字节,如果调用成功返回实际读取到的元素个数,如果返回值与BUF_SIZE不相同,则可能文件结尾或发生错误,可以从ferror和feof获取错误信息或检测是否到达文件结尾。对于本次实验的源文件source.dat来说,其文件大小为2320-35=2285字节,该while总共执行了3次,3次readbytes的值分别为1024/1024/和237。fwrite(buf, sizeof(char), readbytes, backup); /把已经读取的数据写入文
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026宁夏银川经开发展集团有限责任公司职业经理人招聘2人考试参考题库及答案解析
- 2026吉林长春大学旅游学院招聘30人考试参考试题及答案解析
- 2026海南海口市秀英区和美幼儿园招聘考试参考试题及答案解析
- 2026安徽六安市金寨县麻埠镇面向社会招聘2名村级后备干部考试备考题库及答案解析
- 2026福建泉州市级国资集团公司总部招聘5人笔试备考题库及答案解析
- 地下施工防水问题应急处理方案
- 土石方施工中的气象影响应对方案
- 2026上半年广西现代物流集团社会招聘、校园招聘笔试模拟试题及答案解析
- 2026重庆大学城沙小语文非编教师招聘1人考试备考题库及答案解析
- 教室中央空调系统改造方案
- 郴州职业技术学院单招《语文》考试复习题库(含答案)
- 化妆品工厂培训课件
- 【内蒙古乳制品出口贸易发展现状及优化建议分析8900字(论文)】
- 翻译研究论文的写作
- 配电类“两种人”安全规程考试题库
- 《小丑鱼的奇妙世界》大班美术活动
- 医疗质量与安全管理委员会会议专家讲座
- 川2020J146-TJ 建筑用轻质隔墙条板构造图集
- 外研版中考英语复习课件
- GB/T 7762-2003硫化橡胶或热塑性橡胶耐臭氧龟裂静态拉伸试验
- 大学生就业权益与保护
评论
0/150
提交评论