有以下程序: #include main() {FILE*fp; int i,a[6]={1,2,3,4,5,6},k; fp=fopen("data.dat","w+"); fprintf(fp,"%d\n

admin2017-07-05  26

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

选项 A、21.
B、6
C、123456
D、ll

答案A

解析 fopen函数以一定方式打开指定文件,返回一个指向文件的文件指针。如果不能实现打开指定文件的操作,则返回一个空指针NULL。fscanf函数从文本文件中按格式输入。fprintf函数按照格式向文本文件中输出数据。文件定位函数fseek,将指针由文件开头0、当前位置1、末尾2移动指定字节。rewind函数功能使文件的位置指针返回到文件头。本例中,循环实现的功能是求数组的和。程序执行过程为:以读/写方式建立一个新的文本文件data.dat,将1写入文件;执行for循环,将文件指针移到文件开头,将文件第一个数值1赋给k,再将指针移动到开头,向文件内输入a+k=3。for循环实现将a数组中元素累加,结果2l存放在文件中。调用rewind将文件指针移动到开头,调用fscanf函数从文件中读出数值赋予k=21,调用fclose函数关闭文件,打印k值,故A选项正确。
转载请注明原文地址:https://kaotiyun.com/show/WpDp777K
0

最新回复(0)