os课程设计任务书_第1页
os课程设计任务书_第2页
os课程设计任务书_第3页
os课程设计任务书_第4页
os课程设计任务书_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计报告课程名称计算机操作系统课题名称模拟实现单级目录的FAT文件系统专业网络工程班级1201学 号201203120134姓 名伍涛指导教师 刘铁武周铁山谭小兰2015年 3 月24 日湖南工程学院课程设计任务书1 .设计内容:课题一:银行家算法。银行家算法是操作系统中避免死锁的最具代表性算法。该问题可描述为:系统的总的可用临界资源序列为R=ri,r 2,r n ,系统中的m个进程互斥访问资源。进程i执行过程中的最大需求序列为N=ni,n2.n n,当前状态下,诸进程都保持了一定的资源。随着进程的推进,进程i提出了新的资源请求,如将资源分配给它,系统将步入一种新的状态,试 测试新状态是否

2、安全。课题二:模拟实现单级目录的FAT文件系统基本思路:用二进制文件空间模拟磁盘空间,用文件块操作模拟磁盘块操作。基本设计要求:1、实现如下文件系统功能(过程或函数)a、打开文件系统 FILE *OPENSYS(char *file name);b、关闭文件系统 int CLOSESYS(FILE *stream);c、显示目录 void LISTDIR(void);d、建立文件 int FCREATE(char *file name);e、删除文件 int FDELETE(char *file name);f、打开文件 int FOPEN(char *file name);g、关闭文件 in

3、t FCLOSE( int fileid);h、文件块读 int FREAD(void *ptr, i nt n, i nt fileid);i、文件块写 int FWRITE(void *ptr, int n, int fileid);j、判断文件结束k、获取文件指针l、设置文件指针 m取得文件长度int FEOF(i nt fileid);long FGETPOS(int fileid);int FSETPOS(int fileid, long offset); long FGETLEN(char *file name);2、提供文件系统创建程序3、有功能检测模块4、为简化程序设计,假定目

4、录区域大小固定。 文件系统空间划分:保留扇区FAT表区(或字节映像图区)根目录区文件分区可以使用的C语言文件操纵函数:FILE *fope n(const char *file name, const char *mode);int fclose(FILE *stream);int fseek(FILE *stream, long offset, int whenee);long ftell(FILE *stream);size_t fread(void *ptr, size_t size, size_t n, FILE *stream);size_t fwrite(c onst void *

5、ptr, size_t size, size_t n, FILE *stream);课题三:两级目录结构。目录管理是文件系统的核心功能之一。该问题可描述为:创建一简易的文件系统,其核心是体现目录管理的功能。即:创建一个两级目录结构,其一为系统主目录,另一为用户目录。主目录对系统的用户进行管理,用户目录对用户文件进行管理。用户申请创建的 文件确实存在于存储器中,并能对用户的文件进行各种操作(功能同课题二)。2.设计要求:课题一的总体要求是:对终端的随机性输入序列(模拟进程申请资源),能报告新状态是否安全,并决定是否确实将资源分配给该进程。其它要求为:(1) 系统中的资源种类数及进程数不少于5。(

6、2) 有输入的界面,以提供来自终端的随机性输入序列(模拟进程申请资源)。(3) 有输出界面,能报告系统的状态。(4) 程序能根据将步入的状态是否安全来处理这次分配是否实施。课题二和三的总体要求是:并应能实现“按名存取”、有较快的检索速度等目标。其它要求为:(1) 有交互界面,便于对用户对文件进行操作,对非法输入有错误报告。(2) 能根据用户提供的文件名创建文件。(可用内存模拟)如在外存实现评阅时酌情加分。(3) 能根据用户提供的文件名读取文件。将文件夹内容正确显式。(4) 能根据用户的要求删除相应的文件。(5) 能根据用户提供的文件名和要求截断文件,即将文件的陈旧部分删除。选作部分:(1) 如

7、该文件系统中包含有系统文件时,应如何处理较为合理?因为如果仅包含在某一用户目录中,则其它用户不可见!如每个用户文件中都包含这些系统文件,则是对空间的极大的浪费。(2) 实现对文件的保护和共享。二、进度安排1、课题讲解2、 每位同学必选一个题(学号模3加1),可另加选一题。3、如遇机房紧张等客观原因需调整时间的另行通知。(注意:第4周四前必须提交课设报告,迟交或未交只能计零分。时间上午下午星期二课题讲解上机调试星期四上机调试上机调试星期五答辩附: 课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4 大小的图纸及程序清单) 。正文的格式 :一级标题用 3号黑体 ,二级标题用四号宋体加

8、粗 ,正文用小四号宋体 ;行距为 22。 正文的内容 : 一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图) ;三、主要功能的实现(至少要 有一个主要模块的流程图) ;四、程序调试; 五、总结; 六、附件(所有程序的原代码, 要求对程序写出必要的注释) 正文总字数要求在 5000 字以上(不含程序原代码) 。目录781012 错误!未定义书签。16一、程序的功能 二、程序的基本设计思路三、主要的数据结构 4.1 创建文件流程图 .4.3 FREAD 函数流程图 五、程序调试及其运行结果 六、设计总结与心得体会一、程序的功能该程序主要模拟实现单级目录的FAT文件系统,该系统要求能实现

9、对文件的创建、删除、读、写、打开、关闭以及能显示目录等操作,在创建文件时,系统首先为新文件 分配所需的外存空间,并且在文件系统的相应目录中,建立一个目录项,该目录项记录 了新文件的文件名及其在外存中的地址等属性。而当已经不再需要某个文件时,便可以 把它从文件系统中删除。这时执行的是与创建新文件相反的操作。系统先从目录中找到 要删除的文件项,使之成为空项,紧接着回收该文件的存储空间,用于下次分配。通过 读指针,将位于外部存储介质上的数据读入到内存缓冲区这样就实现了文件的读取,通 过写指针,将内存缓冲区中的数据写入到位于外部存储介质上的文件中。在开始使用文 件时,首先必须打开文件。这可以将文件属性

10、信息装入内存,以便以后快速查用。在完 成文件使用后,应该关闭文件。这不但是为了释放内存空间,而且也因为许多系统常常 限制可以同时打开的文件数。当创建文件时,先在目录表中查找是否存在此文件表,若 存在则表示文件同名不能创建,否则在目录表中为此文件先建立一个目录项,保存文件 的一些基本属性,如创建日期、大小、文件名等,并保存文件的首索引块扇区号,对文 件读写也是先在目录项里查找文件是否存在,再根据文件的首索引块扇区号,查找对应 块号中的内容对其进行读写操作, 删除一个文件后回收为其分配的空间, 并更新目录表、 修改文件控制块。显示目录项可以显示文件名、长度以及创建日期。二、程序的基本设计思路模拟实

11、现单极目录FAT的文件系统基本思路:用二进制文件空间模拟磁盘空间, 用文件块操作模拟磁盘块操作。在一个文件系统中对文件进行操作,实现文件的创建、 读写等等操作。在创建文件时先在目录项中进行查找,若创建的文件已存在,文件的创 建首先检验目录是否为空,为空则把文件夹或文件连接到该目录下,不为空则把检查目 录下是否有同名文件夹或文件,有则提示创建不成功 , 而文件夹打开是则把文件夹名称 及其地址压入打开文件夹栈,文件关闭则把文件夹名称及其地址从打开文件夹栈中抛 出。文件夹和文件的删除,文件夹下没有打开的文件或文件没有打开才能删除,否则删 除失败,每次操作成功都要更改目录和 FCB信息。该过程都保存在

12、文件中,是对文件的 操作。本系统建于Windows平台,开发环境为WIN-TC三、主要的数据结构 单级目录单级索引文件系统: 常量 #define BlockSize 512#define DirSize 32 保留扇区结构 struct ReserveBlock int sysblocknum; /* int resblocknum; /* int mapblocknum; /* int rootblocknum; /*文件系统总扇区数 */ 保留扇区扇区数 */ 字节映像图扇区数 */ 根目录区扇区数 */填充字节 */char fillcharBlockSize-4*sizeof(int

13、); /* ;目录结构 struct DirBlockchar filename11; /* 文件名限长 11 个字符 */填充字节 */char fillcharDirSize-4*sizeof(int)-sizeof(long int)-11; /*long filelen; /* int year,month,day; /* int firstindexaddr; /* ;索引块结构 struct IndexBlock文件长度 */ 定义年月日 */ 文件首索引块扇区号 */int dataaddrBlockSize/sizeof(int)-1; /*数据块块号数组 */ 本文件下一索引

14、块块号 */int nextindexaddr; /* ;索引节点结构 struct IndexNode struct IndexBlock block; /* int blockaddr; /* struct IndexNode *nextnode; /*FCB (文件控制块)结构索引块数据 */ 本节点索引块块号 */指向下一索引节点的指针 */;struct FCBBlock int fileid; /*struct DirBlock fileinfo; /* long filepos; /* int fdtblockaddr;/*int fdtblockindex;/*struct F

15、CBBlock *next; /*指向第一个索引节点的指针文件标识 */目录信息 */文件读写指针 */目录项所在块号 */ 目录项所在块内序号 */ 指向下一个文件控制块的指针 */struct IndexNode *firstindexnode; /*/四、相关流程图4.1创建文件流程图文件创建 成功输入文件名,大 小,创建日期文件创建失败, 重新输入文件名4.2删除文件流程图4.3 FREAD函数流程图五、程序调试及运行结果 T t VA t 统5 鶯鶯 泉 t 1 B- l & 9 9 e -rja* fi t .* * V* SIAI 件HThlo501沁#基 ;a:c:rR 电黑

16、- 二 l.TBB,-JlfrJ_ rrj 二 文娄tt农文 始TT專幵干件平生TTf 护 ZT81141J. 51 仝文V S” 度直 名al长飢 件情件IH11:1成 文散文扮份项逹til Art.应助打开丈件不飯图一图1为欢迎界面在输入系统块的数目后产生的界面, 必须先要输入start开始运行文件 系统才能完成建立文件(creat),显示文件目录(list),打开文件(open),关闭文件(close),删除文件(delete),写文件块(write),读文件块(read)等等操作文件赫 istant “IT* 目录山at D|jcn 心p”:del:ur i t e抵卄】舸讣* gsi

17、tlimt输入start成功打开文件系统,再输入creat来创建文件,此图为创建成功后的界面.1 b 1 b f d F 名Beftu fr沱件1211 文數文鲁名?长Hly功負 件埠件:2:1:1应訂 文数文簡期建夫t入入件应怜 一 - F*k kJI F V L F图三图3表示输入list显示文件目录,如图所示创建了 aaa,bbb,ccc三个文件start啟功打开文件系銃 pen成功打幵.文忖曜诅apnbbb应功打开,女件“是沖openetc威功打幵*文杵5是与 e last處功羌汛丈件?C 1心=卍bbb应功关刑文柞tC 1口启=CCC他功黄紺文件f图四图4显示的是成功打开和成功关闭文

18、件rn-dltu in针为5林Hd :s开+打 id內看 fl交件 入入文第几个宇筲 F 23k| RjWSi; cH 1i| a f if n j li g- az a険岀成功。图五输入read读取文件,可以设置读文件的初始位置以及读取文件的长度rite naa便入fdleid=5谕入文件内客$酹0F Etg皿;書心叶詁jv 写入虜豪图六输入write写文件AS:fr5:bbb浣祐人文件长度汽“reat入文件各r-2010鑲入月 商入日鞘二计 支件刨逹成功豊ini沁01功剧除文件hhh应功別沫文件,Ccc图七如图所示删除aaa,bbb,ccc三个文件六、设计总结与心得体会通过一个学期的学习,

19、操作系统的课程设计也要结课了,总的来说经过这门课的 学习收获还是挺大的,它不但使我更了解了课本知识,巩固了课本知识,而且也使我的 编程能力有了一定的提高。这次课程设计是对操作系统的一个总结和复习的过程,课设 的过程是个自我探索、自我学习的过程,其中,我们不仅学到了专业的知识,也提升了 自己的学习能力。在此次课程设计中也遇到了不少的问题和困难,但是通过自己的努力和向同学讨 教都把他一一的给解决了,总之,通过这次课程设计,是我对文件系统有了更深一部的 了解,让我对文件系统不再陌生,当然自己还有很多不足的地方,希望自己在以后的学 习过程中不断的改进,这样才能让自己进步,才能让自己更上一层楼。七、附录

20、 ( 源程序清单 )#include #include #include #define BlockSize 512 #define DirSize 32 #define RootSize 2struct ReserveBlockint sysblocknum;/* 文件系统总扇区数 */int resblocknum;/* 保留扇区扇区数 */int fatblocknum;/*FAT 表扇区数 */int rootblocknum;/* 根目录区扇区数 */ char fillcharBlockSize-4*sizeof(int);/* 填充字节 */ ;struct DirBlockch

21、ar filename11; /* 文件名限长 11 个字符 */ char fillcharDirSize-4*sizeof(int)-sizeof(long int)-11;/* 填充字节 */long filelen;/* 文件长度 */int year,month,day; /* 日期 */ int firstblockaddr; /* 文件首块扇区号 */ ;struct FCBBlockint fileid;/* 文件标识 */long filepos;/* 文件读写指针 */int fdtblockindex;/* 目录项所在块内序号 */struct FCBBlock *nex

22、t;/* 指向下一个文件控制块的指针 */;/* 保留块 */*fcb 头指针 */*目录 */struct ReserveBlock sys1;struct FCBBlock *fcb;struct DirBlock fil32,*dir;char *str,*ptr;char fillcharBlockSize;FILE *fp;FILE *OPENSYS(char *filename) int i; fp=fopen(filename,rb+); fread(&sys1,1,BlockSize,fp); fat1=(int *)malloc(sys1.fatblock for(i=0;i

23、sys1.fatblocknum;i+)/* 读、写缓冲区首地址 */* 填充字符 */* 文件指针 */* 打开文件系统 */* 读保留扇区 */ *BlockSize);/* 读 fat 表 */fread(fat1+i*BlockSize,BlockSize,1,fp);fseek(fp,(sys1.fatblocknum+sys1.resblocknum)*BlockSize,0); dir=fil;for(i=0;isys1.rootblocknum;i+) /* 读目录 */fread(dir+i*BlockSize/DirSize,BlockSize,1,fp);return f

24、p;int CLOSESYS(FILE *stream) /* 关闭文件系统 */ int i;fseek(stream,sys1.resblocknum*BlockSize,0);for(i=0;isys1.fatblocknum;i+) /* 回写 fat 表 */ fwrite(fat1+i*BlockSize,BlockSize,1,stream);fseek(fp,(sys1.fatblocknum+sys1.resblocknum)*BlockSize,0); for(i=0;isys1.fatblocknum;i+)/* 回写目录 */fwrite(dir+i*BlockSize

25、/DirSize,BlockSize,1,fp);fclose(fp);return 0;void LISTDIR(void) /* 显示目录 */int i,flag=0;for(i=0;i10)return 1;for(i=0;isys1.rootblocknum*BlockSize/DirSize;i+) /* 查找是否重名 */ if(strcmp(filename,fili.filename)=0)printf( 文件名已存在! n);return 3; for(i=(sys1.fatblocknum+sys1.resblocknum+sys1.rootblocknum);isys1

26、.sysblocknum;i+) if(fat1i=0) /* 查看是否有空的块 */ flag+;if(flag=0) printf( 磁盘已满 );/* 统计结果为 0,则磁盘已满 */return 0;printf( 空闲块数 :%dn,flag);printf( 请输入文件长度 :);for(j=0;j32;j+)if(filj.firstblockaddr=0)break;while(1)scanf(%d,&dirj.filelen);/* 输入目录项中文件的长度 */ n=(dirj.filelen/BlockSize)+(dirj.filelen%BlockSize?1:0);

27、if(nflag)/* 文件长度小于 0 或大于空闲的空间 */ printf( 文件太长 !n);printf( 请重新输入 :);elsebreak;for(i=(sys1.fatblocknum+sys1.resblocknum+sys1.rootblocknum);ifdtblockindex.filename)=0)return 1;elsep=p-next;for(i=0;isys1.rootblocknum*BlockSize/DirSize;i+)/* 查找是否存在要删除的文件 */if(strcmp(filename,fili.filename)=0) flag=1;brea

28、k; if(flag=0) return 2;j=fili.firstblockaddr; while(1) k=fat1j-1; fseek(fp,(j-1)*BlockSize,0); fwrite(&fillchar,1,BlockSize,fp);fat1j-1=0; if(k=-1) break;else j=k;memset(&fili,0,DirSize); return 0;/*将要删除的文件的块用 0 填充 */*将要删除的文件的目录用 0 填充*/int FOPEN(char *filename)int i,j=0,k,flag=0,id;struct FCBBlock *

29、p,*q,*r; p=fcb;/* 打开文件 */for(i=0;ifileid=j+1;fcb-filepos=0;fcb-next=NULL;fcb-fdtblockindex=i;id=j+1;return id;else while(fcb)j+;/* 判断是否已经打开 */if(strcmp(filename,filfcb-fdtblockindex.filename)=0) return 0;q=fcb;fcb=fcb-next;/* 创建 fcb*/r=(struct FCBBlock *)malloc(sizeof(struct FCBBlock); r-fileid=j+1;

30、r-filepos=0;r-next=NULL;r-fdtblockindex=i;q-next=r;id=j+1;fcb=p;/* 返回打开的文件的标识 fileid*/return id;long FGETLEN(char *filename)/* 获取文件的长度 */ int i;for(i=0;ifdtblockindex.filename)=0) flag=1;fcb=fcb-next;p=fcb;while(p)p-fileid-=1;p=p-next;return flag;p=f;f=f-next;while(f) if(strcmp(filename,filf-fdtbloc

31、kindex.filename)=0) flag=1;p=f-next;/*p=p-next;*/ while(p) p=p-next;p-fileid-=1;free(f);return flag;p=f;f=f-next;if(flag=0) printf(The file has not open!n);return flag;return 0;int FREAD(char *str, int n, int fileid) int m,i,j=0,k,l,len,n1,n2=0;struct FCBBlock *p;p=fcb;while(p)if(p-fileid=fileid)bre

32、ak;elsep=p-next;if(p=NULL)return 1;/* 读文件 */* 查找要读的文件的fcb*/len=filp-fdtblockindex.filelen;l=p-filepos;if(l+n)len)return 2;/* 求文件指针所在文件的相对块号 */j=(l/BlockSize)+(l%BlockSize?1:0); m=(l+n)/BlockSize)+(l+n)%BlockSize?1:0); k=filp-fdtblockindex.firstblockaddr;/* 求文件指针所在的块号 */* 分配读取的缓冲区 */* 读文件 */for(i=1;i

33、j;i+)k=fat1k-1;str=(char *)malloc(m-j+1)*BlockSize+1);for(i=0;ifilepos=n+l; printf(%sn,str);return 0;int FWRITE(char *ptr, int n, int fileid)/* 截断多读的内容 */* 修改文件指针 */* 文件写 */long l;int m,i=0,j,k=0,num,flag=0,flag1=0,b,flag2=0;int n1,n2=0,n3,c;struct FCBBlock *p;char *st1,*st2;st1=(char *)malloc(Block

34、Size);p=fcb;while(p)/* 查找文件的 fcb*/if(p-fileid=fileid)break;elsep=p-next;if(p=NULL)return 1;l=p-filepos;n1=filp-fdtblockindex.firstblockaddr;while(n1!=-1)n2+;m=n1-1;n1=fat1n1-1;if(l+n)n2*BlockSize) /* 判断是否要追加空间 */ n3=(l+n)/BlockSize+(l+n)%BlockSize?1:0)-n2;/* 追加空间 */for(i=(sys1.fatblocknum+sys1.resbl

35、ocknum+sys1.rootblocknum);ifdtblockindex.filelen)flag*BlockSize)return 3;for(i=(sys1.fatblocknum+sys1.resblocknum+sys1.rootblocknum);i=n3) fat1m=i+1;fat1i=-1;break;elsefat1m=i+1;m=i; flag=0;k=0;n3=(l+n)/BlockSize+(l+n)%BlockSize?1:0);j=(l/BlockSize)+(l%BlockSize?1:0); /* 求文件指针所在文件的相对块号 */ st2=(char

36、*)malloc(n3-j+1)*BlockSize);if(l=0)j=1;num=filp-fdtblockindex.firstblockaddr;for(i=1;ij;i+)num=fat1num-1;if(!l%BlockSize)/* 写第 1 块*/fseek(fp,(num-1)*BlockSize+l-(i-1)*BlockSize,0); fread(st2,BlockSize,1,fp);for(c=0;cn;c+)st2c=ptrc;fseek(fp,(num-1)*BlockSize+l-(i-1)*BlockSize,0);fwrite(st2,BlockSize,

37、1,fp);num=fat1num-1;fflush(fp);elsefread(st2,BlockSize,1,fp);for(c=0;cn;c+)st2c+l-(j-1)*BlockSize=ptrc;fseek(fp,(num-1)*BlockSize,0);fwrite(st2,BlockSize,1,fp);num=fat1num-1;fflush(fp);for(i=1;i0) /* 写最后一块 */ fseek(fp,(num-1)*BlockSize,0);fread(st2+i*BlockSize,BlockSize,1,fp);for(c=0;cfilepos=l+n; /

38、* 修改文件指针 */ if(n+l)filp-fdtblockindex.filelen) filp-fdtblockindex.filelen=n+l; /* 修改文件长度 */ return 0;int FEOF(int fileid) /* 判断文件是否结束 */int flag;struct FCBBlock *p; p=fcb;while(p) if(p-fileid=fileid)if(p-filepos=filp-fdtblockindex.filelen) return 0;else return 1;return 2;long FGETPOS(int fileid)stru

39、ct FCBBlock *p;p=fcb;while(p) if(p-fileid=fileid) return (p-filepos);else p=p-next;printf(get faile!n); return(-1);/* 设置文件指针 */int FSETPOS(int fileid, long offset)struct FCBBlock *p;p=fcb; while(p) if(p-fileid=fileid)if(offsetfilp-fdtblockindex.filelen|offsetfilepos=offset;return 0;p=p-next;printf(g

40、et faile!n);return(2);void DISPLAY()printf(ttn);printf(tttt 请输入您要选择的功能 :nn);printf(tttt 开始运行文件系统 :startn);printf(tttt 建立文件 :creatn);printf(tttt 显示文件目录 :listn);printf(tttt 删除文件 :deln);printf(tttt 打开文件 :openn);printf(tttt 关闭文件 :closen);printf(tttt 文件块读 :readn);printf(tttt 文件块写 :writen);printf(tttt 设置文

41、件指针 :setn);printf(tttt 获取文件指针 :getpn);printf(tttt 获取文件长度 :getln);printf(tttt 退出文件系统 :exitn);/* 测试函数 */printf(ttn);void test(char *filename)char *t,cmd10,fname12; struct FCBBlock *p;int flag,len,id,flag1=0,l;while(1)DISPLAY();scanf(%s,cmd);/* 开始运行系统命令 */* 创建文件 */if(!strcmp(cmd,start)fp=OPENSYS(filena

42、me);printf( 成功打开文件系统 n);while(1)scanf(%s,cmd);if(!strcmp(cmd,creat)printf( 请输入文件名 :);scanf(%s,fname);flag=FCREATE(fname);if(flag=0)printf( 文件创建成功 !n);if(flag=1)printf( 文件名太长 !n);if(flag=2)printf( 磁盘已满! n);if(flag=3)printf( 文件已经存在!else if(!strcmp(cmd,list)LISTDIR();else if(!strcmp(cmd,del)scanf(%s,fn

43、ame);n);/* 显示文件目录 */* 删除文件 */flag=FDELETE(fname);if(flag=0)printf( 成功删除文件 !n);if(flag=1)!n);printf( 文件被打开,要删除文件请先关闭文件else if(!strcmp(cmd,open)/* 打开文件 */scanf(%s,fname);flag=FOPEN(fname); if(flag=0)printf( 文件没有被发现,不能打开 !n);elseprintf( 成功打开,文件 ID 是 :%dn,flag);else if(!strcmp(cmd,close) /* 关闭文件 */scanf

44、(%s,fname);flag=FCLOSE(fname);if(flag=1)printf( 成功关闭文件 !n);else if(!strcmp(cmd,read) /* 读文件 */ scanf(%d,&id);p=fcb;printf( 请输入读文件大小 :);scanf(%d,&len);flag=FREAD(str,len,id); if(flag=1) printf( 文件没有被打开,请先打开文件 !n); if(flag=2)printf( 读取文件失败 n);else if(!strcmp(cmd,write) /* 写文件 */ scanf(%d,&id);printf(

45、请输入写文件大小 :);scanf(%d,&len);ptr=(char *)malloc(len+1); printf( 请输入内容 :); scanf(%s,ptr); flag=FWRITE(ptr,len,id);if(flag=1)printf( 文件没有被打开,请先打开文件if(flag=1)printf(wu kong jian!n);if(flag=3)printf( 写操作失败 !n);if(flag=0)printf( 成功写文件 !n);elseif(!strcmp(cmd,set) /* 设置文件指针 */ scanf(%d,&id);printf( 输入指针 :);scanf(%

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论