【题目】从键盘输入10个学生的有关数据,然后把它们转存到磁盘文件上去。
#include<stdio.h>
#include<stdlib.h>
#define N 10
struct student
{
char name[10];
int num;
int age;
char addr[20];
}stu[N];
void save()
{
FILE *fp;
int i;
if((fp=fopen("stu1.dat","wb"))==NULL)
{
printf("Cannot open file!\n");
exit(0);
}
for(i=0;i<N;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("File write error\n");
fclose(fp);
}
int main()
{
int i;
printf("Please enter data of students:\n");
for(i=0;i<N;i++)
scanf("%s %d %d %s",stu[i].name,&stu[i].num,&stu[i].age,stu[i].addr);
save();
return 0;
}
【验证】 为了验证在磁盘文件“stu1.dat”中是否已存在此数据,可用以下程序从“stu1.dat”文件中读入数据,然后再屏幕上输入。
#include<stdio.h>
#include<stdlib.h>
#define N 10
struct student
{
char name[10];
int num;
int age;
char addr[20];
}stu[N];
int main()
{
int i;
FILE *fp;
if((fp=fopen("stu1.dat","rb"))==NULL)
{
printf("Cannot open file\n");
exit(0);
}
for(i=0;i<N;i++)
{
fread(&stu[i],sizeof(struct student),1,fp);
printf("%-10s% -5d% -5d%-20s\n",stu[i].name,stu[i].num,stu[i].age,stu[i].addr);
}
fclose(fp);
return 0;
}