网友您好, 请在下方输入框内输入要搜索的题目:
题目内容
(请给出正确答案)
30、调整文件偏移量位置的off_t lseek(int fd, off_t offset, int whence)函数,第三个参数取值SEEK_SET表示从文件开始处计算偏移量。
参考答案和解析
错误
更多 “30、调整文件偏移量位置的off_t lseek(int fd, off_t offset, int whence)函数,第三个参数取值SEEK_SET表示从文件开始处计算偏移量。” 相关考题
考题
有以下程序#include stdio.hmain ( ){ FILE *fp; int i,a[6]={1,2,3,4,5,6};fp=fopen("d3.dat", " w+b");fwrite(a,sizeof(int),6,fp);fseek(fp,sizeof(int)*3,SEEK_SET); /* 该语句使读文件的位置指针从文件头向后移动 3 个 int 型数据 */fread(a,sizeof(int),3,fp); fclose(fp);for(i=0;i6;i++) printf("%d,",a[i]);}程序运行后的输出结果是A)4,5,6,4,5,6,B)1,2,3,4,5,6,C)4,5,6,1,2,3,D)6,5,4,3,2,1,
考题
●试题四阅读下列程序说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】本程序从若干个原始文件合并成的合并文件中恢复出其中一个或全部原始文件。所有文件均作为二进制文件进行处理。合并文件中先顺序存储各原始文件,然后顺序存储各原始文件的控制信息,即文件名、文件长度和在合并文件中的位置(偏移量 )。其结构为:typedef struct{char fname [256]/*原始文件名*/long length;/*原始文件长度(字节数)*/long offset;/*原始文件在合并文件中的位置(偏移量)*/}FileInfo;在合并文件最后存储如下一个特殊的标志信息作为合并文件的结束标记:FileInfo EndF1ag={"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#includestring.htypedef struct{char fname[256];long length;long offset;}FileInfo;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,FileInfo *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文件长:%1d.\n",inp-fname,inp-length);(5) ;/*恢复合并文件读/写位置*/return 0;}int main(int argc,char *argv[]){FileInfo finfo;char fname[256];FILE *fcmbn;if(argc2){printf("输入合并文件名:");scanf("%s",fname);}else strcpy(fname,argv[1]);if((fcmbn=fopen(fname,"rb"))==NULL){printf("文件打开错误:%s\n",fname);return 1;}fseek(fcmbn,-sizeof(FileInfo),SEEK_END);/*定位于合并文件末尾的标志信息*/fread(finfo,1,sizeof(FileInfo),fcmbn);if(finfo.length!=0 || strcmp(finfo.fnane,"CombinedFile")){printf("指定的文件不是合法的合并文件\n");fclose(fcmbn);return 2;}fseek(fcmbn,finfo.offset,SEEK_SET);/*定位于首个原始文件的控制信息*/for(;;){/*恢复一个(argc2)或全部(argc=2)原始文件*/fread(finfo,1,sizeof(FileInfo),fcmbn);if(finfo.length==0)break;if(argc2 strcmp(finfo.fname,argv[2]))continue;if(dofile(fcmbn,finfo)!=0)break;}fcolse(fcmbn);return 0;}
考题
有以下程序:#includestdio.hvoid main(){ fILE*fp; int i,a[4]={1,2,3,4},b; fp=fopen("data.dat","wb"); for(i=0;i4;i++) fwrite(a[i],sizeof(int),1,fp); fclose(fp) fp=fopen("data.dat","rb"); fseek(fp,-2L*sizeof(int),1,fp);/*文件中读取sizeof(int)字节的数据到变量b中*/ fclose(fp); printf("%d\n",b);}程序中fseek(fp,-2L*sizeof(int),SEEK_END);语句的作用是( )。A.使位置指针从文件末尾向前移2*sizeof(int)字节B.使位置指针从文件末尾向前移2字节C.使位置指针向文件末尾向前移懂2*sizeof(int)字节D.使位置指针向文件末尾移动2字节
考题
请编写两个函数int sum_of_powers(int k,int n),powers(int m,int n),求1~6的k次方的和,sum_of_powers中参数k和n分别表示k次方和所求数列中最大的一个自然数,最后返回所求值,powers中参数m和n分别表示m为底数n为指数,最后返回所求值。要求使用for循环和函数嵌套(int sum_of_powers中调用powers)实现算法。输出结果如下:sum of 4 powers of intergers from 1 to 6=2275注意:部分源程序已存在文件test25_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数sum_of_powers和powers的花括号中填写若干语句。文件test25_2.cpp的内容如下:include<iostream.h>const int k(4);const int n(6);int sum_of_powers(int k,int n),powers(int m,int n);void main(){cout<<"sum of "<<k<<" powers Of intergers from 1 to "<<n<<"=";cout<<sum_of_powers(k,n)<<endl;}int sum_of_powers(int k,int n){}int powers(int m, int n){}
考题
请编写一个函数prim(int num),该函数实现判别参数num是否为素数,在主函数中利用prime()函数验证哥德巴猜想——任何比2大的偶数都可表示为两个素数之和基本功能,根据main函数的调用情况给出正确的返回值。注意:部分源程序已存在文件test36_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数prim的花括号中填写若干语句。文件test36_1.cpp的内容如下:include <iostream.h>const LEN=100;int prim(int num){}void main(){int a=7;int cnt=0;cout<<"a is 7:\n";int *s;s=new int[LEN];for(int i=2;i<a;i++){if(!prim(i)){s[cnt]=i;cnt++;}}for (i=0;i<cnt;i++){for (int j=i+1;j<cnt;j++){if (s [i] +s [j] ==a)cout<<s[i]<<'\t'<<s[j]<<'\t'<<end1;}}}
考题
有以下程序includemain(){FILE*fp;int i,a[6]={1,2,3,4,5,6};fp=fopen("d3.dat","w+b"
有以下程序 #include<stdio.h> main() {FILE*fp;int i,a[6]={1,2,3,4,5,6}; fp=fopen("d3.dat","w+b"); fwrite(a,sizeof(int),6,fp); fseek(fp,sizeof(int),3,SEEK_SET);/*该语句使读文件的位置指针从文件头向后移动3个int型数据*/ fread(a,sizeof(int),3,fp);fclose(fp); for(i=0A.4,5,6,4,5,6,B.1,2,3,4,5,6,C.4,5,6,1,2,3,D.6,5,4,3,2,1,
考题
下列说法不正确的是A.int *fun();----fun是一个返回int指针的函数B.int (*fun)();---fun是一个返回int指针的函数C.int (*array[5])();----array是一个有5个元素的数组,每一个元素都是一个函数指针,指向一个返回int的函数D.int (*fun(int))(int);----fun是带有一个int参数的函数,返回值是一个函数指针,这个指针指向带有一个int参数并返回int的函数
考题
有以下程序 include main() { FILE *fp;int i,a[6]={1,2,3,4,5,6}; fp=
有以下程序 #include<stdio.h> main() { FILE *fp;int i,a[6]={1,2,3,4,5,6}; fp=fopen("d3.dat","w+b"); fwrite(a.sizeof(int),6,fp); fseek(fp,sizeof(int)*3,SEEK_SET):/*该语句使读文件的位置指针从文件头向后移动3个int型数据*/ fread(a,sizeof(int),3,fp);fclose(fp); for(i=0;i<6;i++)printf("%d,",a[i]); } 程序运行后的输出结果是A.4,5,6,4,5,6,B.1,2,3,4,5,6,C.4,5,6,1,2,3,D.6,5,4,3,2,1,
考题
请编写一个函数fun(int x,int n),该函数返回x的n次幂的值,其中x和n都是非负整数。x的n次幂的计算方法是1与x相乘n次,如x的20次幂的计算为1与x相乘20次,注意:部分源程序已存在文件test30_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数fun的花括号中填写若干语句。如输入3和4,输出结果如下:3 481文件test30_2.cpp清单如下:include<iostream.h>double fun(int x, int n){}void main ( ){int x,n;cin>>x>>n;cout<<fun(x,n)<<end1;}
考题
关于free函数的描述错误的是()A.函数原型是int*free(int*p)B.使用free函数时需要头文件stdlib.hC.使用free函数时需要强制类型转换D.free函数中的参数可以是任意的指针变量
考题
请编写一个函数int fun(int n),其中n为自然数。函数fun()的功能是求出自然数n(包括n)以内所有素数的和,并返回其值。注意;部分源程序已存在文件PROC11.cpp中。请勿修改主函数和其他函数中的任何内容,仅在函数fun()的花括号中填写若干语句。文件PROC11.cpp的内容如下://PROC11.cppinclude<iostream>using namespace std;int fun(int n);int main(){int number;cout<<"Enter the number which you want to caculate: \n";cin>>number;cout<<"The result is:"<<fun(number)<<end1;return 0;}int fun(int n){//* * * * * * * * *}
考题
请编写一个函数resort,该函数的功能是:能在一个数列中,对从指定位置开始的几个数,按相反顺序重新排列,并在主函数中输出新的数列。注意:部分源程序已存在文件PROC4.cpp中。请勿修改主函数和其他函数中的任何内容,仅在函数reson()的花括号中填写若干语句。文件PROC4.cpp的内容如下://PROC4.cppinclude<iostream>using namespace std;void resort(int array[],int where,int arrount);int main(){int number[20],where, arrount,i;cout<<"input 20 numbers\n";for(i=0;i20;i++)cin>>number[i];cout<<"how many do you want to sort:";cin>>arrount;cout<<"where do you want to start:";cin>>where;resort(number,where,arrount);cout<<"\n resorted array as follow:\n";for(i=0;i<20;i++)cout<<number[i];return 0;}void resort(int array[ ],int where,int amount){/************/}
考题
下列表示纯虚函数的成员函数是( )。A.virtualintfunc(int);B.voidfunc(int)=0;
下列表示纯虚函数的成员函数是( )。A.virtualintfunc(int);B.voidfunc(int)=0;C.virtualvoidfunc=0;D.virtualvoidrune(int){}
考题
阅读下列程序说明和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;
考题
C语言中main函数参数的非法表示形式是( )A.main(char*argv[],int argc)B.main(int a,char **b)C.main(int y,char*x[])D.main(int argv,char * argc[])
考题
下列不属于FileInputStream输入流的read()成员函数的是()A、 int read();B、 int read(byte b[]);C、 int read(byte b[],int offset,int len);D、 int read(int line);
考题
单选题下列不属于FileInputStream输入流的read()成员函数的是()A
int read();B
int read(byte b[]);C
int read(byte b[],int offset,int len);D
int read(int line);
考题
单选题Lseek()中第三个参数的值为0表示()。A
文件开始位置B
文件读写指针当前位置C
文件结束位置D
都不是
热门标签
最新试卷