#include
#define m 2
main(){
int i;
FILE *fp;
typedef struct{
int year;
int month;
int day;
}date;
struct student{
int number;
char name[20];
date birth;
}student1[m];
fp=fopen("student.doc","w");
for(i=0;i<m;i++){
student1[i].number=i;
scanf("%s",student1[i].name);
scanf("%d%d%d",&(student1[i].birth.year),&(student1[i].birth.month),&(student1[i].birth.day));
fwrite(&(student1[i]),sizeof(struct student),1,fp);
}
fclose(fp);
}
fp = fopen("student.doc", "w");这句不对,写入doc不能用fopen
改成fp = fopen("student.txt", "w");
#include<stdio.h>
#define m 2
void main(){
int i;
FILE *fp;
typedef struct{
int year;
int month;
int day;
}date;
struct student{
int number;
char name[20];
date birth;
}student1[m];
fp = fopen("student.txt", "w");
for (i = 0; i<m; i++){
student1[i].number = i;
scanf("%s", student1[i].name);
scanf("%d%d%d", &(student1[i].birth.year), &(student1[i].birth.month), &(student1[i].birth.day));
fwrite(&(student1[i]), sizeof(struct student), 1, fp);
}
fclose(fp);
struct student student2[m];
fp = fopen("student.txt", "r");
for (i = 0; i<m; i++){
fread(&(student2[i]), sizeof(struct student), 1, fp);
printf("%s%d%d%d\n", student2[i].name,(student2[i].birth.year), (student2[i].birth.month), (student2[i].birth.day));
}
fclose(fp);
}
bzero memset刷新一下,
改一下就好了
fp=fopen("student.doc","w");
for(i=0;i<m;i++){
student1[i].number=i;
scanf("%s",student1[i].name);
scanf("%d%d%d",&(student1[i].birth.year),&(student1[i].birth.month),&(student1[i].birth.day));
fwrite(&(student1[i]),sizeof(struct student),1,fp);
}
fclose(fp);
改成
fp=fopen("student.doc","w");
fwrite(&(student1[i]),sizeof(struct student),m,fp);
}
fclose(fp);