填空题 下列给定程序的功能是调用fun函数建立班级通信录。通信录中记录每位学生的编号、姓名和电话号码。班级人数和学生信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<stdlib.h>
#define N 5
typedef struct
{int num;
char name[10];
char tel[10];
}STYPE;
void check();
/**********found**********/
int fun( 1 *std)
{
/**********found**********/
2*fp; int i;
if((fp=fopen("myfile5.dat", "wb"))=NULL)
return(0);
printf("/nOutput data to file!/n");
for(i=0; i<N; i++)
/**********found**********/
fwrite(&std[i], sizeof(STYPE), 1, 3);
fclose(fp);
return(1);
}
main()
{STYPE S[10]={{1, "aaaaa", "111111"}, {1, "bbbbb", "222222"}, {1, "ccccc", "333333"}, {1, "ddddd", "444444"}, {1, "eeeee", "555555"}};
int k;
k=fun(s);
if(k==1)
{printf("Succeed!"); check();}
else
printf("Fail!");
}
void check()
{FILE *fp; int i;
STYPE s[10];
if((fp=fopen("myfile5.dat", "rb"))==NULL)
{printf("Fail!/n"); exit(0);}
printf("/nRead file and output to screen:/n");
printf("/n hum name tel/n");
for(i=0; i<N; i++)
{fread(&s[i], sizeof(STYPE), 1, fp);
printf("%6d %s% s/n", s[i].num, s[i].name, s[i].tel);
}
fclose(fp);
}
【正确答案】
【答案解析】(1)STYPE (2)FILE (3)fp [解析] 填空1:根据主函数中的调用函数可知,函数的形参应为结构体类型,因此填入STYPE。
填空2:fp是指向文件类型的指针变量,因此填入FILE。
填空3:函数fwrite调用的一般形式为“fwrite(buffer, size, count, fp);”。
buffer:是一个指针变量,在fread函数中它存放输入数据的首地址,在fwrite函数中,它存放输出数据的首地址。
size:表示数据块的字节数。
count:表示要读写的数据块数。
fp:表示文件指针。