有以下程序 #include <stdio.h> main() { FILE *fp; int i, a[6]={1,2,3,4,5,6}, k; fp = fopen("data.dat", "w+b"); fwrite(&a[0

admin2021-07-09  26

问题 有以下程序
#include <stdio.h>
main()
{  FILE  *fp;
   int  i, a[6]={1,2,3,4,5,6}, k;
   fp = fopen("data.dat", "w+b");
   fwrite(&a[0], sizeof(int), 1, fp);
   for (i=1; i<6; i++)
   {  fseek(fp, 0L, 0);
      fread(&k, sizeof(int), 1, fp);
      fseek(fp, 0L, 0);
      a +=k;
      fwrite(&a, sizeof(int), 1, fp);
   }
   rewind(fp);
   fread(&k, sizeof(int), 1, fp);
   fclose(fp);
   printf("%d\n", k);
}
程序的运行结果是

选项 A、21
B、6
C、123456
D、11

答案A

解析 程序执行过程为:以读/写方式打开一个新的二进制文件data.dat,从地址为a的数据块开始,一次输出一个整型字节的数据,只输出一次,将1写入文件中;执行for循环,将文件指针移到文件开头,将文件第一个数值读出赋给k,再将指针移动到开头,向文件内输入a+k=3。for循环实现将a数组中元素累加,结果21存放在文件中。调用rewind将文件指针移动到开头,调用fread函数从文件中读出一个整型数据赋给k=21,调用fclose函数关闭文件,打印k值,A选项正确。
转载请注明原文地址:https://kaotiyun.com/show/retp777K
0

最新回复(0)