下列给定程序的功能是调用fun函数建立班级通信录。通信录中记录每位学生的编号、姓名和电话号码。班级人数和学生信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
【试题源程序】
#include
#include
#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);
retum(1);
}
main()
{ STYPE s[10]={{1,"aaaaa”,“111111”},{1,"bbbbb","222222"},{1,"c
CCCC","333333"},{1,"ddddd","444444"},{1,"eeeee","555555"}};
int k;
k=fun(s);
if(k==1)
{pfintf(”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");
pfinff("\n nun name tel\n");
for(i=0;i< N;i++)
{ fread(&s[i],sizeof(STYPE),1,fp);
pfintf("%6d %s %s\n",s[i].num,s[i].name,S[i].tel);
}
fclose(fp);
}
【正确答案】【1】STYPE
【2】FILE
【3】fp
【答案解析】填空【l】:根据主函数中的调用函数fun(s)可知,函数fun()的形参应为结构体类型,因此填入STYPE。
填空【2】:fp是指向文件类型的指针变量,因此填入FILE。
填空【3】:函数fwrite调用的一般形式为“fwrite(buffer,size,count,fp);”,其中,fp表示文件指针。