计算机二级-C语言-程序填空题-190107记录
//给定程序的功能是:调用fun函数建立班级通讯录。通讯中记录每位学生的编号,姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块(代表要使用结构体)写到名为myfile5.dat的二进制的文件中。
//重要点:1,数据块结构体的定义和使用。2,文件指针的定义以及对文件的读写操作。3,结构体的定义和使用。
#include <stdio.h>
#include <stdlib.h>
//包含工程所需要的头文件,为什么呢?因为之后会用到这些头文件中定义的函数。
#define N 5
//定义一个变量的值为5,以后用到N的时候,就是5。
typedef struct [名称]
{
int num;
char name[10];
char tel[10];
}STYPE;
//C语言可以定义新类型,把这个结构体的新类型名称定义为STYPE,以后使用STYPE就可以。(这里是无名结构体)
void check();
//函数的声明。如果函数是在调用的后面定义的,那么就要进行声明。
int fun(STYPE *std)
{
FILE *fp;
int i;
if((fp=fopen("myfile5.dat","wb"))==NULL) return (0);//打开文件格式为二进制可写格式
printf("\nOutput data to file !\n");
for(i=0;i<N;i++)
{
fwrite(&std[i],sizeof(STYPE),1,fp);//指针使用时,不需要加*,定义的时候需要。
fclose(fp);//关闭文件
return(1);
}
}
main()
{
STYPE s[10]={{1,"aaaaa","111111"},{1,"bbbbb","222222"},{1,"ccccc","333333"},{1,"ddddd","444444"},{1,"eeeee","555555"}};
//STYPE为结构体类型,定义的时候直接使用。
int k;
k=fun(s);//调用fun()函数,把函数返回值赋予k,函数作用,把结构体内容,输入到指定文件中。
if(k==1)
{
printf("Succeed!");
check();//函数作用,把指定文件中的内容显示。
}
else
printf("Fail!");
}
void check()
{
FILE *fp;//定义了一个文件指针fp.
int i;
STYPE s[10];//定义结构体数组。
if((fp=fopen("myfile5.dat","rb"))==NULL)
//打开文件,调用文件打开函数fopen,文件指针进行判断是否为空。"rb"格式打开文件(二进制只读格式)
{
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);
//fread()函数,从文件中开始读取数据,第一个参数,从哪个位置开始读,第二个参数一次读多长,第三个参数一次读这个长度的几个,第四个参数,指针变量代表文件。
printf("%6d %s %s\n",s[i].num,s[i].name,s[i].tel);//结构体输出格式。
}
fclose(fp);//把文件关闭。
}