下列给定程序的功能是调用 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(①______ *std)
{
/**********found**********/
②______ *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, ③______);
fclose(fp);
return(1);
}
void 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 num 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);
}
①STYPE
②FILE
③fp
填空 1: 根据主函数中的调用函数 fun(s)可知, 函数 fun()的形参应为结构体类型, 因此填入 STYPE。
填空 2: fp 是指向文件类型的指针变量, 因此填入 FILE。
填空 3: 函数 fwrite 调用的一般形式为“fwrite(buffer,size,count,fp);”, 其中, fp 表示文件指针。