文件字节倒写实验说明书.docx
《文件字节倒写实验说明书.docx》由会员分享,可在线阅读,更多相关《文件字节倒写实验说明书.docx(10页珍藏版)》请在冰豆网上搜索。
![文件字节倒写实验说明书.docx](https://file1.bdocx.com/fileroot1/2023-1/5/1f1192d2-5a90-4294-b055-5a037aba7bea/1f1192d2-5a90-4294-b055-5a037aba7bea1.gif)
文件字节倒写实验说明书
*******************
实践教学
*******************
兰州理工大学
运算机与通信学院
2012年秋季学期
操作系统原理课程设计
题目:
文件字节倒写实验
专业班级:
运算机
(2)班
姓名:
张德鹏
学号:
指导教师:
李睿
成绩:
前言
在现代运算机系统中,用户的程序和数据,操作系统自身的程序和数据,乃至各类输入输出设备都是以文件形式显现的。
尽管文件有多种存储介质能够利用,如磁盘、软盘、光盘、闪存、经历棒等,可是,它们都以文件的形式出此刻操作系统的治理者和用户眼前。
一个文件中所存储的可能是数据,也可能是程序的执行码,不同格式的文件通常都会有不同的操作。
对文件的操作可分为两类:
一是对文件自身的操作,要紧实现文件的创建、删除、复制等;二是对记录的操作,例如在文件中查找一个记录。
而文件字节倒写实验即是实现对文件的具体操作,该设计第一需要创建一个文本文件,在文件中输入要进行操作的内容。
然后将文件中的内容按原有的顺序输出以检查文件内容是不是有误。
最后将文件倒写,使该文件的最后一个字节成为第一个字节,而第一个字节成为最后一个字节,从而实现其字节倒写。
摘要
用高级语言编写和调试一个文件字节倒写的程序。
选择一个适合长度的磁盘文件实现其字节倒写,使该文件的最后一个字节成为第一个字节,而第一个字节成为最后一个字节。
依照题目的要求,咱们第一要创建一个文本文件,在文件中输入要进行操作的内容。
然后将文件中的内容按原有的顺序输出以检查文件内容是不是有误。
最后将文件倒写,使该文件的最后一个字节成为第一个字节,而第一个字节成为最后一个字节,从而实现其字节倒写。
关键词:
文本文件;磁盘文件;字节倒写
正文
1.设计思想
依照题目的要求,咱们第一要创建一个文本文件,在文件中输入要进行操作的内容。
然后将文件中的内容按原有的顺序输出以检查文件内容是不是有误。
最后将文件倒写,使该文件的最后一个字节成为第一个字节,而第一个字节成为最后一个字节,从而实现其字节倒写。
因此,咱们第一编写一个程序实现创建一个文本文件,在此程序中我
用到了文件的读写生成操作
if((fp=fopen("test","w+"))==NULL)
{printf("cannotopenfile\n");
exit
(1);}
利用循环实现字节的输入
do{gets(str);
strcat(str,"\n");
fputs(str,fp);}
while(*str!
='\n');}
当输入空字节时循环终止并退出操作。
然后将文件中的内容按原有的顺序输出以检查文件内容是不是有误,在此用到了文件的读打开操作
if((fp=fopen("test","r"))==NULL)
{printf("cannotopenfile\n");
exit
(1);}
循环输出文件内容
while(!
feof(fp))
{fgets(str,8,fp);
printf("%s",str);}
最后将文件倒写,使该文件的最后一个字节成为第一个字节,而第一个字节成为最后一个字节,文件读打开
if((fp=fopen("test","r"))==NULL)
{printf("cannotopenfile\n");
exit
(1);}
倒写输出while(!
feof(fp))
{str[i]=fgetc(fp);
i++;}
for(i=80;i>=0;i--)
printf("%c",str[i]);
2.算法用到的要紧数据结构(采纳类c语言概念)
一、程序顶用到的头文件有:
#include<>
#include<>
#include<>
二、采纳的相关数据类型有:
char;int
3.相关的各模块的伪码算法
1.创建原始文件算法
voidmain1(void)
/*创建原始文件*/
{inti=0;
if((fp=fopen("test","w+"))==NULL)/*读写生成文本文件*/
{printf("Cannotopenfile\n");/*文件打开失败*/
exit
(1);}
printf("Enterastring(CRtoquit):
\n");
do
{scanf("%c",&str[i]);/*输入文件内容*/
strcat(str,"\n");/*加上一个新行符‘\n'*/
fputs(str,fp);/*将字符串的内容写到文件中*/
i++;}
while(str[i-1]!
='\n');/*输入空串时终止*/
printf("\n");}
2.显示文件内容算法
voidmain2(void)
/*显示文件内容*/
{inti;
if((fp=fopen("test","r"))==NULL)/*读打开文本文件*/
{printf("Cannotopenfile\n");/*文件打开失败*/
exit
(1);}
for(i=0;i<80;i++)/*正向输出*/
printf("%c",str[i]);
printf("\n");}
3.倒向显示文件内容算法
voidmain3(void)
/*倒向显示文件内容*/
{inti;
if((fp=fopen("test","r"))==NULL)/*读打开文本文件*/
{printf("Cannotopenfile\n");/*文件打开失败*/
exit
(1);}
for(i=80;i>=0;i--)/*反向输出*/
printf("%c",str[i]);}
4.调试分析
调试中碰到的问题及对问题的解决方式
本次课程设计进程中碰到很多问题,从简单的c++语言到数据结构类型的概念和算法设计,都有很多疑惑。
在不断地查询资料后终于解决了这些问题。
其中在查询进程当选择了快速查找和分类查找,通过对照能够选择最优的查询算法
5.测试结果
1.运行程序,输入文件内容;
2.按回车,显示正写与倒写的结果。
6.源程序(带注释)
#include<>
#include<>
#include<>
FILE*fp;/*声明文件结构体类型指针变量*/
charstr[80];/*概念文件长度*/
voidmain1();/*创建原始文件*/
voidmain2();/*显示文件内容*/
voidmain3();/*倒向显示文件内容*/
voidmain1(void)/*创建原始文件*/
{inti=0;
if((fp=fopen("test","w+"))==NULL)/*读写生成文本文件*/
{printf("Cannotopenfile\n");/*文件打开失败*/
exit
(1);}
printf("Enterastring(CRtoquit):
\n");
do
{scanf("%c",&str[i]);/*输入文件内容*/
strcat(str,"\n");/*加上一个新行符'\n'*/
fputs(str,fp);/*将字符串的内容写到文件中*/
i++;}
while(str[i-1]!
='\n');/*输入空串时终止*/
printf("\n");
}
voidmain2(void)/*显示文件内容*/
{inti;
if((fp=fopen("test","r"))==NULL)/*读打开文本文件*/
{printf("Cannotopenfile\n");/*文件打开失败*/
exit
(1);
}
for(i=0;i<80;i++)/*正向输出*/
printf("%c",str[i]);
printf("\n");}
voidmain3(void)/*倒向显示文件内容*/
{inti;
if((fp=fopen("test","r"))==NULL)/*读打开文本文件*/
{printf("Cannotopenfile\n");/*文件打开失败*/
exit
(1);
}
for(i=80;i>=0;i--)/*反向输出*/
printf("%c",str[i]);}
main()/*主函数*/
{charstr[80];
/*各个单元函数依次执行,实现以下功能*/
printf("Input:
\n");
main1();/*执行函数
(1),创建test文件*/
printf("Outputinorder:
\n");
main2();/*显示文本内容*/
printf("Pourtowrite:
\n");
main3();/*倒向显示文件内容*/
}
/*输入文件内容后依次按回车,将顺序执行正向显示.倒向显示.退出等操作*/
总结
本次课程设计完成了文件操作问题全数进程,结果知足设计要求,验证无误。
设计进程中也碰到很多困难,尤其是关于文件创建与输出程序的设计实现。
专门需要注意的是由于进程的数据共享会带来其他一些问题,各个循环中的循环小模块需要严格区别开来,才能使输出结果正确有序。
这些正是编写多进程程序时最需要注意的地址。
通过该题目的设计进程,初步把握操作系统中有关磁盘文件读的原理、软件开发方式并提高解决实际问题的能力。
本次设计,我较好地把握了进程机制和文件的各类操作的全进程,尤其是对文件治理有了更深的明白得,开拓了思路,锻炼了实践动手能力,达到了课程设计目的。
在设计的进程中,通过查阅各类资料我还了解了与操作系统有关的其他知识,不仅增强了原有知识的巩固,而且扩大了知识面,积存了愈来愈多的知识和动手的体会,为往后的工作和学习奠定了基础。
因此,在以后的学习和生活中,咱们要做个有心人,一点一滴的积存体会,储蓄愈来愈多的知识,我相信在以后的某一天咱们的尽力必然会取得回报,咱们必然会取得骄人的成绩。
参考文献
1.汤子瀛,哲凤屏.《运算机操作系统》.西安电子科技大学学出版社.
2.王清,李光明.《运算机操作系统》.冶金工业出版社.
3.孙钟秀等.《》.高等教育出版社
4.曾明.《》.陕西科学技术出版社.
5.张丽芬,刘利雄.《操作系统实验教程》.清华大学出版社.
6.孟静,《 》.高等教育出版社
7.周长林,《》.高等教育出版社
8.张尧学,《》,清华大学出版社
9.任满杰,《》,电子工业出版社
致谢
能够完成这次操作系统课程设计,我要感激我的指导教师和操作系统原理课的教师王旭阳教师。
王教师在我的课程设计进程中提出了指导性的方案和架构,并指引我阅读相关的资料和书籍,我的能力取得了提高,养成了科学、严谨学习适应。
王教师在咱们的日常学习中给了咱们许多启发性的建议并使咱们积存了大量的操作系统知识,为咱们的课程设计奠定了坚实的基础。
在本次课程设计当中,有很多同窗帮忙我完成对程序的测试,使得我的很多疑问取得解决,进一步巩固了所学习的内容,对我的课程设计的完成也起了不小的作用,在他们的帮忙下,我才能够比较好的完成着次课程设计,在此一并表示感激。
附件Ⅰ部份源程序代码
1.创建文本文件源代码
#include<>
#include<>
voidmain(void)
{charstr[80];
FILE*fp;
if((fp=fopen("test","w+"))==NULL)
{printf("cannotopenfile\n");
exit
(1);}
printf("Enterastring(CRtoquit):
\n");
do{gets(str);
strcat(str,"\n");
fputs(str,fp);}
while(*str!
='\n');}
2.显示文本文件内容源代码
#include<>
#include<>
#include<>
voidmain(void)
{charstr[80];
FILE*fp;
if((fp=fopen("test","r"))==NULL)
{printf("cannotopenfile\n");
exit
(1);}
while(!
feof(fp))
{fgets(str,8,fp);
printf("%s",str);}}
3.倒写文本文件内容源代码
#include<>
#include<>
#include<>
voidmain(void)
{charstr[80];inti=0;
FILE*fp;
if((fp=fopen("test","r"))==NULL)
{printf("cannotopenfile\n");
exit
(1);}
while(!
feof(fp))
{str[i]=fgetc(fp);
i++;}
for(i=80;i>=0;i--)
printf("%c",str[i]);}