问答题 下列给定程序的功能是调用fun函数建立班级通信录。通信录中记录每位学生的编号、姓名和电话号码。班级人数和学生信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: #ir1clude < stdio.h > #iticlude < 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) retuEr1(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", "333 33 3"}, {1,"ddddd", "4 4 4 4 4 4"}, { 1," eeeee ", "555555")}; int k; k=fun(s); if(k==1) {printf("Succeed!"); check();} else printf("Fail!"); } V01d cheCk() { FILE*fp;int i; STYPE S[10]; if((fp=fopen("myfil e5.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],si zeof (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
【答案解析】解析:本题考查:函数定义;变量定义;写数据块函数fwrite。 填空1:根据主函数中的调用函数可知,函数的形参应为结构体类型,因此填入STYPE。 填空2:fp是指向文件类型的指针变量,因此填入FILE。 填空3:函数fwrite调用的一般形式为“fwrite ( buffer,size,count,fp);”。 buffer:是一个指针变量,在fread函数中它存放输入数据的首地址,在fwrite函数中,它存放输出数据的首地址。 size:表示数据块的字节数。 count:表示要读写的数据块数。 fp:表示文件指针。