【例10.4】从键盘输入10个学生的有关数据,然后把它们转存到磁盘文件上去。
#include<stdio.h>
struct Student{char name[20];int number;int age;
};
int main(){int i;struct Student stu;FILE *fp;fp = fopen("1.txt","wb");if(fp == NULL){printf("文件不存在!");return -1;}for(i=0;i<10;i++){scanf("%s %d %d",stu.name,&stu.number,&stu.age);fwrite(&stu,sizeof(stu),1,fp);}return 0;
}
输入:
刘一 1001 18
陈二 1002 19
张三 1003 20
李四 1004 30
王五 1005 40
赵六 1006 41
孙七 1007 23
周八 1008 25
吴九 1009 27
郑十 1010 28
从1.txt文件中读入数据,然后在屏幕上输出。
第一种:数据读入到结构体
int main(){struct Student stu;FILE *fp;int i;fp = fopen("1.txt","rb");if(fp == NULL){printf("文件不存在!");return -1;}for(i=0;i<10;i++){fread(&stu,sizeof(stu),1,fp);printf("%s %d %d\n",stu.name,stu.number,stu.age);}return 0;
}
第二种:数据读入到结构体数组中
int main(){struct Student stus[10];FILE *fp;int i;fp = fopen("1.txt","rb");if(fp == NULL){printf("文件不存在!");return -1;}fread(stus,sizeof(struct Student),10,fp);for(i=0;i<10;i++){printf("%s %d %d\n",stus[i].name,stus[i].number,stus[i].age);}return 0;
}
【例10.6】在磁盘文件上存有10个学生的数据。要求将第1,3,5,7,9个学生数据输入计算机,并在屏幕上显示出来。
int main(){struct Student stus[10];int i;FILE *fp;fp = fopen("1.txt","rb");if(fp == NULL){printf("文件不存在!");return -1;}for(i=0;i<5;i++){fread(&stus[i],sizeof(struct Student),1,fp); fseek(fp,sizeof(struct Student),SEEK_CUR);}for(i=0;i<5;i++){printf("%s %d %d\n",stus[i].name,stus[i].number,stus[i].age);}return 0;
}