有以下程序 #include 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

admin2015-07-28  17

问题 有以下程序
#include
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

解析 该段代码以读写的方式"wb+"打开二进制文件data.dat,并将数组a的第一个元素写入文件,接下来的for循环是用fread()函数不断读取当前文件中的数据,将该数据和数组a的下一个元素累加后又用fwrite()函数写入到文件当中(语句"fseek(fp, 0L, 0);"和"rewind(fp)"的作用是将文件指针移动至文件首),所以最终文件内记录的是数组a中所有元素之和,答案选A。
转载请注明原文地址:https://kaotiyun.com/show/GKJp777K
0

随机试题
最新回复(0)