重复多次fclose一个打开过一次的FILE*fp指针会有什么结果?

题目

重复多次fclose一个打开过一次的FILE*fp指针会有什么结果?


相似考题
参考答案和解析
正确答案:导致文件描述符结构中指针指向的内存被重复释放,进而导致一些不可预期的异常。
更多“重复多次fclose一个打开过一次的FILE*fp指针会有什么结果?”相关问题
  • 第1题:

    有以下程序 include main() { FILE *fp;int k,n,a[6]={1,2,3,4,5,6}; f

    有以下程序 #include<stdio.h> main() { FILE *fp;int k,n,a[6]={1,2,3,4,5,6}; fp=fopen("d2.dat","w"); fprintf(fp,"%d%d%d\n",a[0],a[1],a[2]);fprintf(fp,"%d%d%d\n",a[3],a[4],a[5]); fclose(fp); fp=fopen("d2.daf","r"); fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n); fclose(fp); } 程序运行后的输出结果是

    A.1 2

    B.1 4

    C.123 4

    D.123 456


    正确答案:D
    解析:将有6个元素的整型数组分两行输出到一个文件中,因为输出的都是数字并且每行都没有分隔符,所以当再对其进行读取操作时,每一行都会被认为是一个完整的数,而换行符则作为它们的分隔符。故本题答案为D)。

  • 第2题:

    有下列程序: include main() { FILE *fp; int a[10]={1,2,3},i,n;

    有下列程序: #include <stdio.h> main() { FILE *fp; int a[10]={1,2,3},i,n; fp=fopen("d1.dat","w"); for(i=0;i<3;i++) fprintf(fp,"%d",a[i]); fprintf(fp,"\n"); fclose(fp); fp=open("d1.dat","r"); fscanf(fp,"%d",&n); fclose(fp); prinff("%d\n",n); 程序的运行结果是( )。

    A.12300

    B.123

    C.1

    D.321


    正确答案:B
    解析:本题考查以读和写的方式打开文件对文件内容操作的不同,fp=fopen("d1.dat","w");以可写的方式为输出建立新文本文件,调用printf输出“123”,fp=fopen("d1,dat","r");以只读的方式打开文本文件,不能对文件内容进行操作,故运行结果为选项B)。

  • 第3题:

    有以下程序(提示:程序中fseek(fp,-2L*sizeof(int),SEEK_END);语句的作用是使位置指针从文件末尾向前移2 * sizeof(int)字节): #include <stdio.h> main() { FILE *fp; int i, a[4]={1,2,3,4},b; fp=fopen("data.dar","wb"); for(i=0;i<4;i++) fwrite(&a[i],sizeof(int),1,fp); fclose(fp); fp=fopen("data.dar","rb"); fseek(fp,-2L*sizeof(int),SEEK_END); fread(&b,sizeof(int),1,fp); /*从文件中读取sizeof(int)字节的数据到变量b中*/ fclose(fp); printf("%d\n",b); } 执行后的输出结果( )。

    A.2

    B.1

    C.4

    D.3


    正确答案:D
    解析:Leek(fp,-2L*sizeof(int),SEEK_END);语句的作用是使位置指针从文件末尾向前移2*sizeof(int)字节,调用此函数后指针指向a[2],fread(&b,sizeof(int),1,fp)是从文件中读取sizeof(int)字节的数据到变量b中,也就是从文件中读取数据3到变量b中。

  • 第4题:

    有以下程序:includemain(){FILE*fp;int i,k=0,n=0; fp=fopen("d1.dat","w"); for(i=1;

    有以下程序: #include <stdio.h> main() { FILE *fp;int i,k=0,n=0; fp=fopen("d1.dat","w"); for(i=1;i<4;i++) fprintf(fp,"%d",i); fclose(fp); fp=fopen("d1.dat","r"); fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n); fclose(fp); { 执行后的输出结果是( )。

    A.1 2

    B.123 0

    C.1 23

    D.0 0


    正确答案:B
    解析:fprintf、fscanf函数与printf、scanf函数作用相仿,都足格式化读写函数,其区别在于:fprintf和fscanf函数的读写对象不是终端而是磁盘文件。这两个函数的一般调用方式为:fprintf(文件指针,格式字符串,输出表列);fscanf(文件指针,格式字符串,输入表列);程序首先将123写入d1.dat文件中,再从该文件中将数据读给变量k和n。由于文件d1.dat中的数据是123,按格式“%d%d”读数据时将123读给k,n没有得到读入的数据,保持初始值0。

  • 第5题:

    以下程序的功能是# include <stdio.h>main (){ FILE *fp1;*fp2; fp1=fopen ("file1","r"); fp2=fopen ("file2","w"); while (!feof (fp1)) fputc (fgetc (fp1),fp2); fclose (fp1); fclose (fp2);}A.将磁盘文件的内容显示在屏幕上 B.将两个磁盘文件合为一个C.将一个磁盘文件复制到另一个磁盘文件中D.将两个磁盘文件合并后送屏幕


    正确答案:C
    本题主要考查文件的操作。在本题的程序中,首先定义了两个文件指针fp1和fp2,然后用指针fp1指向一个以读方式打开的文件file1,用指针fp2指向一个以写方式打开的文件file1,接着执行while循环,循环的结束条件是(!feof (fp1))为假,即feof (fp1)为真,表示对文件fp1的操作读取到结束符,因此,循环结束的条件是对文件file1的读取结束,循环体语句fputc (fgetc (fp1),fp2);中用到了fgetc和fputc函数,C语言提供这两个函数对文本文件进行字符的读写操作。fgetc(fp1)函数的作用是从输入流fp1的当前位置返回一个字符,并将文件指针指示器移到下一个字符处;fputc(ch,fp2)函数的作用是将字符ch的值写入所指定的流文件的当前位置处,并将文件指针后移一位。
    根据上面的分析,可以知道循环结束后,即将指针fp1指向的文件复制到指针fp2指向的文件中,然后关闭两个操作的文件。因此,本题程序的作用是将一个磁盘文件复制到另一个磁盘文件中,本题正确答案选C。

  • 第6题:

    有以下程序

    #inculde <stdio.h>

    main()

    { FILE*Fp;char str[10];

    Fp=Fopen(“myFile.dat”,”W”);

    Fputs(“aBc”,Fp);Fclose(Fp);

    Fp=Fopen(“myFile.dat”,”a+”);

    FprintFF(Fp,”%d”,28);

    reWind(Fp);

    FscanF(Fp,”%s”,str);puts(str);

    Fclose(Fp);

    }

    程序运行后的输出结果是

    A.aBc

    B.28c

    C.aBc28

    D.因类型不一致而出错


    正确答案:C
    解析:首先打开文件写入字符串"abc",然后关闭文件,再打开时文件指针定位到了最后,写入"28",然后重定位位置指针到开始,读取字符串为"abc28"。

  • 第7题:

    以下程序的功能是()includemain(){FILE * fp1;*fp2;fp1=fopen("filel","r");fp2=fopen

    以下程序的功能是( ) #include<stdio.h> main() {FILE * fp1; *fp2; fp1=fopen("filel","r"); fp2=fopen("file2","w"); while(!feof(fp1)) fputc(fgetc(fp1),fp2); fclose(fp1);fclose(fp2);}

    A.将磁盘文件的内容显示在屏幕上

    B.将两个磁盘文件合为一个

    C.将一个磁盘文件复制到另一个磁盘文件中

    D.将两个磁盘文件合并后送屏幕


    正确答案:C

  • 第8题:

    以下程序的功能是()。includemain(){FILE*fPl;*fp2;fp1:fopen("file1","r");fp2:fopen(

    以下程序的功能是( )。 # include <stdio.h> main() {FILE*fPl; *fp2; fp1:fopen("file1","r"); fp2:fopen("file2","w"); while(! Feof(fP1)) fputc(fgetc(fP1),fp2); fclose(fP1);fclose(fp2);}

    A.将磁盘文件的内容显示在屏幕上

    B.将两个磁盘文件合为一个

    C.将一个磁盘文件复制到另一个磁盘文件中

    D.将两个磁盘文件合并后送屏幕


    正确答案:C
    解析:程序首先定义了两个文件类型的指针fp1、fp2。为读打开文件filel,并让指针fp1指向该文件;为写打开文件file2,并让指针fp2指向该文件。循环执行从文件file1中读取一个字符,输出到文件file2中,直到文件file1结束。因此程序的功能是将文件file1中的内容复制到文件file2中。

  • 第9题:

    ( 40 )有以下程序

    #include <stdio.h>

    main ()

    { FILE *fp;char str[10];

    fp=fopen ( " myfile.dat " , " w " ) ;

    fputs ( " abc " ,fp ) ;fclose ( fp ) ;

    fpfopen ( " myfile.dat:, " a+ " ) ;

    fprintf ( fp, " %d " ,28 ) ;

    rewind ( fp ) ;

    fscanf ( fp, " %s " ,str ) ; puts ( str ) ;

    fclose ( fp ) ;

    }

    程序运行后的输出结果是

    A ) abc

    B ) 28c

    C ) abc28

    D )因类型不一致而出错


    正确答案:C

  • 第10题:

    下列程序的功能是()。   #include   main( )   { FILE *fp1,*fp2;    fp1=fopen(“d1.dat”,“r”);  fp2=fopen(“d2.dat”,“w”);    while(!feof(fp1))     fputc(fgetc(fp1),fp2));    fclose(fp1);    fclose(fp2);   }


    正确答案:将文件d1.dat的内容复制到文件d2.dat中

  • 第11题:

    填空题
    对于如下程序:  #include    main( )  {    FILE *fp;    fp=fopen(“file.txt”,“w”);    fprintf(fp,“%s”,“xyz”);    fclose(fp);  }  若文件file.txt中原有的内容为good,则运行该程序以后,文件file.txt中的内容为()

    正确答案: xyz
    解析: 暂无解析

  • 第12题:

    填空题
    下列程序的功能是()。   #include   main( )   { FILE *fp1,*fp2;    fp1=fopen(“d1.dat”,“r”);  fp2=fopen(“d2.dat”,“w”);    while(!feof(fp1))     fputc(fgetc(fp1),fp2));    fclose(fp1);    fclose(fp2);   }

    正确答案: 将文件d1.dat的内容复制到文件d2.dat中
    解析: 暂无解析

  • 第13题:

    有以下程序:includemain(){FILE *fp;int i,k=0,n=0;fp=fopen("d1.dat","w");for(i=1;i

    有以下程序: #include<stdio.h> main() { FILE *fp; int i,k=0,n=0; fp=fopen("d1.dat","w"); for(i=1;i<4;i++) fprintf(fp,"%d",i); fclose(fp); fp=fopen("d1.dat","r"); fscanf(fp,"%d%d",&k,&n); printf("%d %d\n", k,n); fclose(fp); } 执行后输出结果是( )。

    A.1 2

    B.123 0

    C.1 23

    D.0 0


    正确答案:B
    解析:本题中首先定义了一个文件指针fp,然后通过函数fopen以w的方式打开文件d1.dat,直接通过一个for循环,每循环一次调用函数fprintf将i的值写进fp所指的文件中,该循环共循环3次,循环完后fp所指文件的内容为123,然后通过fclose函数关闭fp所指文件。接着通过fscanf函数将中所指文件的内容读出并赋值给变量k和变量n,由于fp所指文件中只有123没有分隔符,故只给k赋值为123,变量n的值依然为以前的值,故最后输出k和n的值为123、0,所以,4个选项中选项B符合题意。

  • 第14题:

    有以下程序: #include<stdio.h> main( ) {FILE*fp;char str[10]; fp=fopen("myfile,dat",""); {puts("abe",ip);fclose(fp); fp=fopen("myfile.dat","a*"); fprintf(fp,"%d",28); rewind(fp); fscanf(fp,"%S",str);puts(str); fclose(fp); } 程序运行后的输出结果是( )。

    A.abc

    B.28c

    C.abc28

    D.内类型不一致而出错


    正确答案:C
    本题考查文件的操作,首先打开文件,进行写操作,把“abc”写入“myfile”文件,再打开“myfile.data"文件,输入28,在键盘上接收字符,输出并关闭文件。本题结果为abc28。

  • 第15题:

    有以下程序include main(){FILE *fp;int i=20,j=30,k,n;fp=fopen("d1.dat","w");fprin

    有以下程序 #include <stdio.h> main() { FILE *fp; int i=20,j=30,k,n; fp=fopen("d1.dat","w"); fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j); fclose(fp); fp=fopen("d1.dat", "r"); fp=fscanf(fp,"%d%d",&k,&n); printf("%d%d\n",k,n); fclose(fp); } 程序运行后的输出结果是

    A.20 30

    B.20 50

    C.30 50

    D.3020


    正确答案:A
    解析:本题考查的知识点是文件的综应用。本题首先以创建方式打开文件“d1.dat”,两次调用fprintf()把i和i的值写到文件“d1.dar”中,文件“d1.dat的内容为20回车>30回车,后把该文件关闭再以读的方式打开,文件位置指针指向文件头,在通过fscanf()函数从中读取两个整数到k和n中,由于格式符无间隔,因此输入数据可以用回车隔开,故输入的k值为20,n的值为30.所以4个选项中A正确。

  • 第16题:

    有以下程序:includemain(){FILE*fp;int a[10]={1,2,3},i,n;fp=fopen("d1.dat","w");fo

    有以下程序: #include<stdio.h> main() {FILE*fp;int a[10]={1,2,3},i,n; fp=fopen("d1.dat","w"); for(i=0;i<3;i++)fprintf(fp,"%d",a[i]); fprintf(fp,"\n"); fclose(fp); fp=fopen("d1.dat","r"); fscanf(fp,"%d",&n); fclose(fp); printf("%d\n",n); 程序的运行结果是( )。

    A.12300

    B.123

    C.1

    D.321


    正确答案:B

  • 第17题:

    下述程序向文件输出的结果是_______。includevoid main(){ FILE*fp=fopen("TEST","wb")

    下述程序向文件输出的结果是_______。 #include<stdio.h> void main() { FILE*fp=fopen("TEST","wb"); fprintf(fp,"%d%5.of%c%d",58,76273.0,'-'2278); fclose(fp); }

    A.5876273-2278

    B.5876273.000000-2278

    C.5876273-2278

    D.因文件为二进制文件而不可读


    正确答案:C
    解析:fprintf函数工作时,多个数据间不会自动加分隔符,选项A错误;浮点数的输出格式是“%5.of”表明其小数部分输出0位,即没有输出,所以选项B也是错误的。

  • 第18题:

    有下列程序: include<stdi0.h>voidmain( ) {FILE*fp;inta[10]={1,2,3},i,n; fp=fopen(&q

    有下列程序:

    #include<stdi0.h>

    voidmain( )

    {

    FILE*fp;inta[10]={1,2,3},i,n;

    fp=fopen("dl.dat","w");

    for(i=0;i<3;i++)fprintf(fp,"%d",a[i]);

    fprintf(fp,”\n”);

    fclose(fp);

    fp=open("dl.dat","r")

    fscanf(fp,"%d",&n);

    fclose(fp);

    printf(”%d\n”,n);

    }

    程序的运行结果是( )。

    A.12300

    B.123

    C.1

    D.321


    正确答案:B
    B。【解析】本题考查文件的读写和相关操作,fp=fopen("dl.dat","w")以写的方式为输出建立新文本文件.调用printf输出“123”,fp=fopen("dl.dat","r")以只读的方式打开文本文件,不能对文件内容进籀操作,故运行结果为选项B。

  • 第19题:

    能正确定义一个用来指向打开文件的文件型指针变量fp的语句是( )

    A.file fp;

    B.file *fp;

    C.FILE fp;

    D.FILE *fp;


    正确答案:D
    "file”是在头函数“stdio.h"冲定义的文件结构型的用户自定义数据类型符,这个用户自定义的数据类型符是大写字母组成的,所以备选答案A山是错误的。文件型指针变量在定义时,变量名的前面必须有“*”,所以备选答案C也是错误的,本题应选答案D。

  • 第20题:

    有以下程序includemain(){ FILE *fp;int i=20,j=30,k,n;fp=fopen("d1.dat","w");fprin

    有以下程序 #include<stdio.h> main() { FILE *fp;int i=20,j=30,k,n; fp=fopen("d1.dat","w"); fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j); fclose(fp); fp=fopen("d1.dat","r"); fscanf(fp,"%d%d",&k,&n;printf("%d%d\n",k,n); fclose(fp);} 程序运行后的输出结果是

    A.20 30

    B.20 50

    C.30 50

    D.30 20


    正确答案:A
    解析:本题中,最主要的是掌握几个有关文件的函数的应用。函数名:fopen功能:打开一个文件调用方式FILE*fp;fp=fopen(文件名,使用文件方式);函数名:fprintf功能:传送格式化输出到一个文件中调用方式:fprintf(文件指针,格式字符串,输出表列);函数名:fclose功能:关闭一个文件调用方式:fclose(文件指针);函数名:fscanf功能:从磁盘文件执行格式化输入调用方式:fscanf(文件指针,格式字符串,输入表列)。

  • 第21题:

    对于如下程序:  #include    main( )  {    FILE *fp;    fp=fopen(“file.txt”,“w”);    fprintf(fp,“%s”,“xyz”);    fclose(fp);  }  若文件file.txt中原有的内容为good,则运行该程序以后,文件file.txt中的内容为()


    正确答案:xyz

  • 第22题:

    单选题
    有以下程序#include main(){ FILE *fp; int k,n,a[6]={1,2,3,4,5,6}; fp=fopen(d2.dat,w); fprintf(fp,%d%d%d,a[0],a[1],a[2]); fprintf(fp,%d%d%d,a[3],a[4],a[5]); fclose(fp); fp=fopen(d2.dat,r); fscanf(fp,%d%d,&k,&n); printf(%d%d,k,n); fclose(fp);}程序运行后的输出结果是(  )。
    A

    123456

    B

    14

    C

    1234

    D

    12


    正确答案: D
    解析:
    将有6个元素的整型数组分两行输出到一个文件中,因为输出的都是数字并且每行都没有分隔符,所以当再对其进行读取操作时,每一行都会被认为是一个完整的数,而换行符则作为它们的分隔符。答案选择A选项。

  • 第23题:

    问答题
    重复多次fclose一个打开过一次的FILE*fp指针会有什么结果?

    正确答案: 导致文件描述符结构中指针指向的内存被重复释放,进而导致一些不可预期的异常。
    解析: 暂无解析