学生成绩结构体文件
程序要求:有五个学生,每个学生有三门课的成绩,从键盘上输入学生的学号,姓名,三门课成绩,把它们存放到磁盘文件中,并从该文件中能读出显示。
源程序:
#include <stdio.h>
#include <stdlib.h>
#define stu struct student
stu
{
long num[20];
char name[20];
float sc1;
float sc2;
float sc3;
}
s[5];
void save()
{
FILE *fp;
int i;
if ((fp = fopen("e:\\student.dat", "wb")) == NULL)
{
printf("cannot open file\n");
return;
}
for (i = 0; i < 5; i++)
{
if (fwrite(&s[i], sizeof(stu), 1, fp) != 1)
printf("file write error\n");
}
fclose(fp);
}
void load()
{
FILE *fp;
int i;
if ((fp = fopen("e:\\student.dat", "rb")) == NULL)
{
printf("cannot open file\n");
return;
}
for (i = 0; i < 5; i++)
{
if (fread(&s[i], sizeof(stu), 1, fp) != 1)
printf("file write error\n");
printf("%s %s %.1f %.1f %.1f\n", s[i].num, s[i].name, s[i].sc1, s[i].sc2, s[i].sc3);
}
fclose(fp);
}
void main()
{
int i;
for (i = 0; i < 5; i++)
scanf("%s%s%f%f%f", s[i].num, s[i].name, &s[i].sc1, &s[i].sc2, &s[i].sc3);
save();
load();
}
运行结果
1 dd 25 25 25
2 wq 66 55 84
3 eq 56 56 86
5 qe 55 96 99
6 eq 599 55 55
1 dd 25.0 25.0 25.0
2 wq 66.0 55.0 84.0
3 eq 56.0 56.0 86.0
5 qe 55.0 96.0 99.0
6 eq 599.0 55.0 55.0