有以下程序#include <stdio.h>main(){ FILE *fp; int i;char ch[]="abcd",t;fp=fopen("abc.dat","wb+");for(i=0; i<4; i++) fwrite(&ch[i],1,1,fp);fseek(fp,-2L,SEEK_END);fread(&t,1,1,fp);fclose(fp);printf("%c\n",t);}程序执行后的输出结果是A)dB)cC)bD)a

题目

有以下程序

#include <stdio.h>

main()

{ FILE *fp; int i;

char ch[]="abcd",t;

fp=fopen("abc.dat","wb+");

for(i=0; i<4; i++) fwrite(&ch[i],1,1,fp);

fseek(fp,-2L,SEEK_END);

fread(&t,1,1,fp);

fclose(fp);

printf("%c\n",t);

}

程序执行后的输出结果是

A)d

B)c

C)b

D)a


相似考题
参考答案和解析
正确答案:B
答案 B
解析 : fseck(fp,-2L,SEEK_END); 语句将位置指针从文件末尾处向后退 2 个字节 , 此时指向的是字符 ‘v'’语句 fread(&,1,1,fp) 读出字符 ‘c’。
更多“有以下程序#include &lt;stdio.h&gt;main(){ FILE *fp; int i;char ch[]="abcd",t;fp=fopen ”相关问题
  • 第1题:

    有以下程序includevoid WriteStr(char*fn,char*str){FILE*fp; fp=fopen(fn,"w");fputs

    有以下程序 #include<stdio.h> void WriteStr(char*fn,char*str) { FILE*fp; fp=fopen(fn,"w");fputs(str,fp);fclose(fp); } main() { writeStr("t1.dat","start"); WriteStr("t1.dat","end"); } 程序运行后,文件t1.dat中的内容是

    A.start

    B.end

    C.startend

    D.endrt


    正确答案:B
    解析:使用fputs函数输出字符串到文件时,将覆盖原文件中的内容。

  • 第2题:

    有以下程序:includemain(){ FILE*fp;int i;char ch[]="abcd",t;fp=fopen("abc.dat","w

    有以下程序: #include <stdio.h> main() { FILE *fp; int i; char ch[]="abcd",t; fp=fopen("abc.dat","wb+"); for(i=0;i<4;i++)fwrite(&ch[i]1,1,fp); fseck(fp,-2L,SEEK_END) ; fread(&t,1,1,fp); felose(fp); printf("%c\n",t); } 程序执行后的输出结果是( )。

    A.d

    B.c

    C.b

    D.a


    正确答案:B
    解析:程序首先定义了一个文件指针fp,并使用fopen()函数以"wb+"方式新建一个可读写文件"abe.dat"。然后使用一个for循环,循环变量i从0递增到3,在循环体中每次写入ch[i]的值。所以循环结束时,文件中的内容应该为:abed。接下来程序使用fseek()函数,将文件的读写指针从文件末尾处向后退2个字节,文件末尾是最后一个输出字节的下一个字节,即下次写入数据的位置,所以此时文件读写指针指向的是字符'c'。最后调用ficadO函数从文件中读取1个字节到变量t中。所以最终输出应该为:c。故本题选B。

  • 第3题:

    有以下程序的输出结果是________。 #include <stdio.h> int main() { FILE *fp; int i; char ch[]="abcd",t; fp=fopen("abc.dat","wb+"); for(i=0;i<4;i++) fwrite(&ch[i],1,1,fp); fseek(fp,-2L,SEEK_END); fread(&t,1,1,fp); fclose(fp); printf("%cn",t); return 0; }


    emoclew emoclew

  • 第4题:

    有以下程序 include void WriteStr(char*fn,char*str) {FILE*fp; fp=f

    有以下程序 #include<stdio.h> void WriteStr(char*fn,char*str) {FILE*fp; fp=fopen(fn"w");fputs(str,fp);fclose(fp); } main() { WriteStr("t1.dat"start"); WriteStr("t1,dat","end"); } 程序运行后,文件t1.dat中的内容是 ______。

    A.start

    B.end

    C.startend

    D.endrt


    正确答案:B
    解析:两次使用“写入”的方式打开同一个文件,在第二次打开时,文件指针指向文件头,所以此次写入的数据覆盖了文件原有的数据,故本题中t1.dat的内容为end。

  • 第5题:

    有以下程序:include<stdio.1l>void WriteStr(char*fn.char*str){ FILE*fp;fp=fopen(fn,&q

    有以下程序:

    #include<stdio.1l>

    void WriteStr(char*fn.char*str)

    { FILE*fp;

    fp=fopen(fn,"w");fputs(str,fp);fclose(fp);}

    main

    { WriteStr("tl.dat","start");

    WriteStr("t1.dat","end");)

    程序运行后,文件t1.dat中的内容是( )。

    A. start

    B.end

    C.startend

    D.endrt


    正确答案:B
    用"w"方式打开文件,意思是如果文件名相同则覆盖原来的文件,所以当再次输入时覆盖了第一次的内容,B选项正确。