第十二章    文件
基础训练
一、填空题
1、 文件是指___________________________________________________________。
2、 根据数据的组织形式,C中将文件分为______ASCII码文件________和___二进制文件___________两种类型。
3、 现要求以读写方式,打开一个文本文件 stu1 ,写出语句:
__FILE *fp fp=fopen(,r+);_______________。
__________________________________。
4、 现要求将上题中打开的文件关闭掉,写出语句:___fclose(fp);__________________。
5、 若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则打开文件方式字
符串应该是___fopen(a.txt,wb+);__________。
二、选择题
1、若要打开A盘上user子目录下名为的文本文件进行读、写操作,下面符合此要求的函数调用是(      ) 。             
A) fopen("A:\","r")    B) fopen("A:\\user\\","r+")
C) fopen("A:\","rb")  C) fopen("A:\\user\\","w")
2、若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为(    )。
A) 0                  B) 1        C) -1          D) 一个非0值
3、 当已经存在一个文件,执行函数fopen(“”,”r+”)的功能是(    )。
A)打开文件,清除原有的内容;
B)打开文件,只能写入新的内容;
C)打开文件,只能读取原有内容;
D)打开文件,可以读取和写入新的内容;
4、 fread(buf , 64,2,fp)的功能是:(      )
A)从fp所指向的文件中,读出整数64,并存放在buf中;
B)从fp所指向的文件中,读出整数64和2,并存放在buf中;
C)从fp所指向的文件中,读出64个字节的字符,读两次,并存放在buf地址中;
D)从fp所指向的文件中,读出64个字节的字符,并存放在buf中;
5、 以下程序的功能是(    ) 。
main()
{
FILE  * fp;
char  str[]=”Beijing  2008”;
  fp = fopen(“file2”,”w”);
  fputs(str,fp);
  fclose(fp);
}
A)在屏幕上显示“Beiing  2008”;
B)把”Beijing  2008”存入file2文件中;
C)在打印机上打印出“Beiing  2008”;
D)以上都不对;
6、 以下程序是建立一个名为myfile的文件,并把从键盘输入字符存入该文件,当键盘上输入结束时关闭该文件。选择正确内容填空。
main()fgets和fgetc的区别
{ FILE  *fp;
char  c ;
char  name[10];
fp=fopen(“myfile”,_”wb”_______);
do
{ c=getchar();
  fputc(c , fp);
} while(c!=EOF);         
fclose(fp);  }
(1) A) fgets          B)fopen       C )  fclose            D)  fgetc
(2) A) “r”            B)  “r+”      C )  “w”              D)  “w+”
三、设计题
1、 编写一个程序,以只读方式打开一个文本文件 ,如果打开,将文件地址放在fp文件指针中,打不开,显示“Cann’t  open    file \n. ”,然后退出。void main()
{
    FILE *fp;
    if((fp=fopen("","r"))='\0');
    printf("")
}
综合训练
8、填空题
1、以下程序段打开文件后,先利用 fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。
FILE  *myf;  ling  f1;
myf= _________ (“test.t”,“rb”);           
fseek(myf,0,SEEK_END); f1=ftel(myf);
fclose(myf);
printf(“%d\n”,f1);
2、下面程序把从终端读入的10个整数以二进制方式写到一个名为bi.dat的新文件中,请填空.
    #include<stdio,h>
    FILE  *fp;
    main()
    {  int i,j;
      if((fp=fopen(__”bi.dat”__________,    "wb"))==NULL)  exit(0);       
      for(i=0;  i<10; i++)
      {  scanf("%d",&j);
        fwrite(&j,sizeof(int),1,______fp_______  );                 
    }
    fclose(fp);
3、以下程序用来统计文件中字符个数。请填空。
#include  "stdio.h"
main()
{ FILE  *fp;  long  num=0L;
    if((fp=fopen("fname.dat","r"))==NULL)
    {  pirntf("Open error\n");  exit(0);}
    while( ___!feof(fp)______________ )                     
    { fgetc(fp); num++;}
    printf("num=%1d\n",num-1);
    fclose(fp);
}
4、以下程序中用户由键盘输入一个文件名,然后输入一串字符(用#结束输入)存放到此文件文件中形成文本文件,并将字符的个数写到文件尾部,请填空。
  #include <stdio.h>
    main(  )
    {      FILE    *fp;
          char    ch,fname[32];  int  count=0;
          printf("Input the filename :"); scanf("%s"fname);
        if((fp=fopen( _fname____________  "w+"))==NULL)                       
      {    printf("Can't open file:%s \n"fname); exit(0);}
      printf("Enter data:\n");
      while((ch=getchar())!="#"){  fputc(ch,fp);  count++;}
      fprintf(____________ ,"\n%d\n" count);                           
      fclose(fp);
    }
5、以下程序的功能是:从键盘上输入一个字符串, 把该字符串中的小写字母转换为大写字母,输出到文件中,然后从该文件读出字符串并显示出来。请填空。
    #include
    main()
    { FILE    *fp;
      char    str[100];    int  i=0;
      if((fp=fopen("",___________))==NULL)
        { printf("can't open this file.\n");exit(0);}
        printf("input astring:\n");    gest(str);
        while (str[i])
        { if(str[i]>='a'&&str[i]<='z')
            str[i]=_____ ________;
            fputc(str[i],fp);
            i++;
        }
        fclose(fp);
        fp=fopen("",______________);
        fgets(str,100,fp);
        printf("%s\n",str);
        fclose(fp);
    }
6、 下面程序由键盘输入字符,存放到文件中,用!结束输入,请在____________上填空。
#include  <stdio.h>
main()
{ FILE  *fp;
char  ch ;
char  fname[10];
printf(“Input  name  of  file\n”);
gets(fname);
if ((fp=fopen( fname, “w”))==NULL)
  { printf (“cannot  open  file\n”);
  exit(0) ;
  }
printf((“Enter  data:\n”);
while(_______________!=’!’)          //提示:从键盘输入一个字符,如不是!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。