-
1 文字讲解
-
2 视频讲解
一、选择题
1. C语言中,文件由 组成。
A. 字符(字节)序列 B. 数据块 C. 数据行 D. 记录
2. C语言中的文件类型只有 。
A. 索引文件和文本文件两种 B. ASC文件和二进制文件两种
C. 文本文件一种 D. 二进制文件一种
3. C语言中文件的存取方式是 。
A. 只能随机存取 B. 只能顺序存取
C. 可以顺序存取,也可随机存取 D. 只能从文件开头进行存取
4. fges( str, n, ftp ) 函数从文件中读入一个字符串。以下叙述中正确的是 。
A. 字符串读入后不会自动加入"\0"
B. fp 是 file 类型的指针
C. fgets函数将从文件中最多读入 n-1 个字符
D. fgets函数将从文件中最多读入n个字符
5. 已知函数 fread( ) 的调用形式为“fread( buffer, size, count, fp)”,其中buffer代表的是 。
A. 存入读入数据项的存储区
B. 一个指向所读文件的文件指针
C. 存放读入数据的地址或指向此地址的指针
D. 一个整型变量,代表要读入的数据项总数
二、程序填空题
1. 下面的程序是由终端输入字符,存放到文件中,用“#”结束输入。
#include <stdio.h>
main( )
{
FILE fp;
char ch,filename[10];
printf("\n 输入文件名:");
scanf("%s", filename );
if( fp = fopen( filename, "w" ))==NULL )
{ printf("cannot open file \n");
exit(0);
}
printf("\n 输入字符序列直到 '#' 为止.");
while( != '#' )
fputc( );
fclose( fp )
}
2. 下面的程序是用变量 num 统计文件中字符的个数。
#include <stdio.h>
main( )
{
FILE *fp;
long num = 0;
char ch;
fp=fopen("file.dat'', );
while( )
{ ch = ;
num++;
}
;
}
3、下面的程序是将文本文件fin.dat复制到文件fout.d加t中,
#include <stdio.h>
void fcopy( )
{ char k;
while ( )
{ k=fgetc( );
;
}
}
main( )
{
FILE *fout, *fin;
fin = fopen("fin.dat","r");
fout = ;
fcopy( fout, fin );
fclose( fout );
fclose( fin );
}
4. 下面的程序是从一个二透制文件中读入结构体数据,并把结构体数据显示在终瑶屏幕上
#include <stdio.h
struct rec
{ char cc ;
int ii;
float ff;
};
void recout( )
{ struct rec r;
while( )
{ fread( &r, ,1, );
printf("%c,%d,%f\n", );
}
}
main( )
{
FILE *f;
f=fopen("fn1.dat","rb");
reout( f );
fclose( f );
}
5. 下面的程序是把从终端读入的10个整数以二进制的方式写到一个名为bi.dat的新文件中。
#include <stdio.h>
FILE *fp;
main( )
{
int i, j;
if ((fp=fopen( ,"wb"))=NULL)
exit( 0 ) ;
for( i = 0; i <10 ; i++)
{
scanf("%d", &j );
fwrite(&j, sizeof(int ), 1, );
}
fclose(fp):
}
三、编程题
1、编写一个函数fun( ),其功能是将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为1,失败时返回值为。在复制的过程中,把复制的内容输出到终端屏幕。
2、编写一个函数fun( ),其功能是:将自然数 1 ∽ 10 以及它们的平方根写到名为 myfile1.txt 的文本文件中,然后再顺序读出显示在屏幕上。
3、编写一个函数 fun( ),其功能是建立班级通讯录。通讯录中记录每位学生的编号、姓名和电话号码,班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为 myflie2.dat 的一进制文件中。


