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

admin2021-04-28  34

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

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

答案C

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

最新回复(0)