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

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);
    
    }
    
    评论
  • 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);

    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 unity 绘画方面的问题
  • ¥15 FTP 明明给了权限但是还是550 Permission denied问题
  • ¥20 Java的kafka错误unknowHostException
  • ¥20 gbase 8a没有lisense,需要获取一个lisense
  • ¥15 前端的3d饼图不知道用啥框架做的
  • ¥15 算法问题 斐波那契数 解答
  • ¥15 VS2019 SPY++ 获取句柄操作
  • ¥15 Facebook 获取广告
  • ¥15 PID算法的输出结果如何转换成pwm
  • ¥15 java文本解密算法