皮皮学,免费搜题
登录
logo - 刷刷题
搜题
【简答题】
阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。 【说明】 本程序从若干个原始文件合并成的合并文件中恢复出其中一个或全部原始文件。所有文件均作为二进制文件进行处理。合并文件中先顺序存储各原始文件,然后顺序存储各原始文件的控制信息,即文件名、文件长度和在合并文件中的位置(偏移量)。其结构为: typedef struct {char fname [256] /*原始文件名*/ long length; /*原始文件长度(字节数)*/ long offset; /*原始文件在合并文件中的位置(偏移量)*/ }FileInfo; 在合并文件最后存储如下一个特殊的标志信息作为合并文件的结束标记: FileInfo EndFlag={'Combined File',0,_offset}; 其中_offset是第一个原始文件的控制信息在合并文件中的位置(偏移量)。 启动本程序的命令行的格式是: 程序名 合并文件名 [原始文件名] 如果不指定原始文件名,默认恢复合并文件中的所有原始文件。 程序中涉及的部分文件操作的库函数简要说明如下: int fread(void * buffer,int size,int count,FILE * fbin):从二进制文件流fbin中读取 count块长度为size字节的数据块到buffer指向的存储区。返回值为实际读取的数据块数。 int fwrite(void * buffer,int size,int count,FILE * fbin):各参数和返回值的意义与fread相同,但对文件进行写操作。 int fseek(FILE * fbin,long offset,int position):将文件流fbin的读/写位置以position为基准移动offset字节。position的值可以是SEEK_SET(文件头),SEEK_CUR(当前位置), SEEK_END(文件尾);offset为正,表示向文件尾方向移动,为负表示向文件头方向移动,为零表示到基准位置。 long ftell(FILE * fbin):返回文件流fbin的当前读/写位置(相对于文件头的偏移量)。上述偏移量均以字节为单位,即偏移字节数。 【程序】 include <stdio. h> include <string. h> typedef struct { char fname[256];long lengt;long offset; } Filelnfo; void copyfile( FILE*fin, FILE * fout,int fsize) { char buf[1024];int siz=1024; while(fsize !=0){ /*每次复制siz个字节,直至复制完fsize个字节*/ if(siz >fsize) (1); fread(buf,1,siz,fin); fwrite(buf,1,siz,fout); fsize=(2);} } int dofile(FILE * fin,Filelnfo * inp) { long offset; FILE * fout; if (( fout = fopen ( inp - > fname ,'wb' ))==NULL) { printf('创建文件错误: %s/n' , inp -> fname); return 1; } offset=(3); /*保留合并文件读/写位置*/ fseek((4)); /*定位于被恢复文件首*/ copyfile ( fin, fout, inp - > length); fclose(fout); printf('/n ---文件名: %/n 文件长: %ld. /n',inp -> fname, inp -> length); (5); /*恢复合并文件读/写位置*/ return 0; } int main( int argc, char * argv[ ]) { Filelnfo finfo; char fname[256] ;FILE * fcmbn; if(argc <2) { printf('输入合并文件名:' ) ;scanf('%s' ,fname); else strcpy(fname,argv[1]); if((fcmbn = fopen(fname,'rb' )) == NULL) { printf('文件打开错误: %s/n' ,fname);return 1; } fseek(fcmbn, -sizeof(Filelnfo),SEEK_END); /*定位于合并文件末尾的标志信息*/ fread(&finfo,1,sizeof(Filelnfo) ,fcmbn); if(finfo. length!=0||strcmp(finfo. fnane,' CombinedFile' )){ printf('指定的文件不是合法的合并文件/n'); fclose (fcmbn); return 2; } fseek(fcmbn,finfo. offset,SEEK_SET); /*定位于首个原始文件的控制信息*/ for(;;){ /*恢复一个(argc>2)或全部(argc=2)原始文件*/ fread ( &finfo,1, sizeof (Fitelnfo), fcmbn); if(finfo, length ==0) break; if (argc> 2 && strcmp(finfo. fname,argv[2] )) continue; if (dofile ( fcmbn, &finfo)!=0) break; } fcolse(fcmbn);return 0;
手机使用
分享
复制链接
新浪微博
分享QQ
微信扫一扫
微信内点击右上角“…”即可分享
反馈
参考答案:
举一反三
【简答题】物质的概念是什么?(结合课本22页第二段)
【判断题】反手结是所有绳结当中最简单的一种,可以作为止滑的手把,也可以当做绳尾结。反手结也是许多其他绳结的基础。
A.
正确
B.
错误
【单选题】OBT的临床意义不正确的是
A.
钩虫病可出现阳性
B.
克罗恩病阳性
C.
消化道肿瘤呈间断性阳性
D.
消化道肿瘤呈持续性阳性
E.
消化道溃疡呈间断性阳性
【单选题】 操作“患者仰卧位,患侧下肢稍外展屈膝,治疗者将患者下肢置于上方上肢与躯干之间,双手握住消退远端稍将小腿向下牵引后向上摆动”属于
A.
长轴牵引膝关节
B.
旋转摆动膝关节
C.
伸膝摆动膝关节
D.
前后向滑动膝关节
E.
后前向滑动膝关节
【单选题】一般来说厚度大于等于多少厚的墙常用于承重墙,小于这个数字的墙是非承重墙。
A.
370
B.
240
C.
270
D.
300
【单选题】OBT的临床意义不正确的是
A.
钩虫病可出现阳性
B.
克罗恩病可阳性
C.
消化道肿瘤呈间断性阳性
D.
消化道肿瘤呈持续性阳性
E.
消化道溃疡呈间断性阳性
【单选题】指出下列不属于攻击行为的表述( )。
A.
对他人具有敌视性、伤害性和破坏性
B.
实施行为的基本要素不在于伤害意图
C.
侵犯行为
D.
它的一种特殊形式是欺负
【单选题】1951 年首届亚运在下列哪个城市举办 ?
A.
新德里
B.
马尼拉
C.
吉隆坡
D.
曼谷
【单选题】OBT的临床意义不正确的是
A.
钩虫病可出现阳性
B.
克罗恩病可阳性
C.
消化道肿瘤呈间断性阳性
D.
消化道肿瘤呈持续性阳性
【单选题】某些部位可见典型的紫纹、肌肉萎缩、骨质疏松及儿童生长停滞等,称为
A.
水中毒
B.
呆小病
C.
侏儒症
D.
尿崩症
E.
库欣综合征
相关题目:
参考解析:
知识点:
题目纠错 0
发布
创建自己的小题库 - 刷刷题