有以下程序: #include main() FTIL*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);

admin2020-07-28  21

问题 有以下程序:
    #include
    main()
FTIL*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,OL,0);
  fwrite(&a,sizeof(int),1,fp);
  }
  fseek(fp,0L,0);
  fread(&k,sizeof(int),1,fp);
  fclose(fp);
  printf(“%d\n”,k);
    程序运行后的输出结果是(    )。

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

答案C

解析 首先使用fopen函数以只写方式打开文件datAdat,返回文件指针fp,然后通过调用fwrite函数,将起始地址为&a[0]、单位长度为sizeof(int)的一个元素写入文件,即写入a[0];接着for循环从数组a的第二个元素起,每次首先使用fseek()函数将指针fp定位到文件datAdat的开始位置,写入起始地址&a、单位长度为sizeof(int)的一个元素,即写入a;此时数组元素按照逆序写入文件:65432l。循环结束后,使用fseek()函数再将指针fp定位到文件开始位置,调用fread()函数,从fp所指位置读取单位长度为sizeof(int)的一个元素到变量k中,即k:6,最后调用fclose()函数关闭文件,输出k的值6,故答案为C。
转载请注明原文地址:https://kaotiyun.com/show/qX3p777K
0

最新回复(0)