c语言把结构体内容写入文件问题

#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);