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

admin2009-04-15  29

问题 有以下程序(提示:程序中fseek(fp,-2L*sizeof(int),SEEK_END) ;语句的作用是使位置指针从文件末尾向前移2*sizeof(int)字节)    #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中*/       felose(fp);       printf("%d\n",b) ;    }    执行后输出结果是  

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

答案8

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

最新回复(0)