有以下程序(提示:程序中fseek(fp-2L*sizeof(int),SEEK_END) ;语句的作用是使位置指针从文件末尾向前移2*sizeof(ing)字节) #include <stdio.h> main() { FILE *

admin2013-06-11  23

问题 有以下程序(提示:程序中fseek(fp-2L*sizeof(int),SEEK_END) ;语句的作用是使位置指针从文件末尾向前移2*sizeof(ing)字节)    #include  <stdio.h>    main()    {  FILE *fp;   int i,  a[4]={1,2,3,4},b;      fp=fopen("data.dat","wb");      for(i=0;i<4;i++)  fwrite(&a,sizeof(int),1,fp);      fclose(fp);      fp=fopen("data.dat","rb");      fseek(fp,-2L*sizeof(int),SEEK_END) ;      fread (&b, sizeof (int),1,fp); /*从文件中读取sizeof(int)字节的数据到变量b中*/      fclose(fp);      printf("%d\n",B) ;    }    执行后输出结果是

选项 A、2
B、1
C、4
D、3

答案8

解析 函数fopen(const char *filename,constchar*mode)的功能是以mode指定的模式打开filename指定的磁盘文件:fclose(FILE*fp)的功能是关闭文件指针fp指向的文件; 函数 fscanf(FILE*fp,const chat’*format1,address,--])的功能是根据format中的格式从中指向的文件中读取数据,并存入到相应的address指向的变量中.函数 fprintf(FILE*fp,const char*format[,argument--])的功能是把argument列表中的表达式值写到fp所指向的文件中;函数fwfite(void*ptr,int size,int n,FILE*fp)的功能是把ptr指向的缓冲区中的size×n个字节写到文件指针fp指向的文件中。本题中首先定义了一个文件指针fp,然后通过函数fopen以可"wb"的方式打开文件"data.daft",直接通过一个for循环,每循环一次调用函数fwrite将数组中的元素a的值写进 fp所指的文件中,该循环共循环4次,循环完后fp所指文件的内容为123,然后通过fclose函数关闭fp所指文件.接着通过函数fopen以"rb”的方式打开文件"data.dat",通过fseek函数让指针中从文件末尾向前移动2个int型大小字节的,然后通过函数fread从中所指的文件中读取一个int型大小的数据到变量b中,故此时b的值为3,因此最后输出的,b的值为3,所以,4个选项中选项D符合题意。
转载请注明原文地址:https://kaotiyun.com/show/9yJp777K
0

最新回复(0)