我到底错哪了
2017-01-09 08:03
采纳率: 25%
浏览 5.0k
已采纳

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

图片图片

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • 小灸舞 2017-01-09 11:22
    已采纳

    fp = fopen("student.doc", "w");这句不对,写入doc不能用fopen
    改成fp = fopen("student.txt", "w");

    打赏 评论
  • 小灸舞 2017-01-10 01:31
     #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);
    
    }
    
    2 打赏 评论
  • dc66584409 2017-01-09 08:23

    bzero memset刷新一下,

    打赏 评论
  • IT_Stack 2017-01-10 01:10

    改一下就好了
    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);

    打赏 评论

相关推荐 更多相似问题