第1题
下列给定程序的功能是调用fun函数建立班级通信录。通信录中记
录每位学生的编号、姓名和电话号码。班级人数和学生信息从键盘读
入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件
中。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得
出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构!
/**********code.c**********/
#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);
**********-code.c**********