2 qq 37283655 qq_37283655 于 2017.01.09 16:03 提问

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个回答

qq423399099
qq423399099   Ds   Rxr 2017.01.09 19:22
已采纳

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

qq423399099
qq423399099 回复qq_37283655: 你不能直接双击打开,用fread读才行,我写了断读的代码,贴在下面
一年多之前 回复
qq_37283655
qq_37283655 还是不行 。在文件有字母但没数字字还多了一些[[[[[[[]]]]]]]]
一年多之前 回复
tangjingyunshiweifen
tangjingyunshiweifen   2017.01.10 09: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);

qq423399099
qq423399099   Ds   Rxr 2017.01.10 09: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);

}
qq423399099
qq423399099 回复qq_37283655: 但你双击打开DOC应该看不到你想要的吧
一年多之前 回复
qq_37283655
qq_37283655 我试过用doc也行的啊,为什么一定要用txt呢?
一年多之前 回复
qq_37283655
qq_37283655 对的,谢谢!
一年多之前 回复
dc66584409
dc66584409   2017.01.09 16:23

bzero memset刷新一下,

u011261430
u011261430 回复qq_37283655: memset(void * _Dst,0,size_t _Size);
一年多之前 回复
qq_37283655
qq_37283655 没用过 memset 能不能具体点
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C语言中将结构体写入文件
可以使用fwrite()将一个结构体写入文件:   fwrite(&some_struct,sizeof somestruct,1,fp); 对应的fread函数可以再把它读出来,此处fwrite受到一个结构的指针并把这个结构的内存映像作为字节流写入文件。sizeof操作符计算出结构占用的字节数。 但是这样用内存映像写出的数据文件却是不能够移植的,尤其是当结构中包含浮点成员或指针的时候。结构
快速的将一个结构体写入文件--内存映射文件
一篇文章的标题该怎么选择?我个人觉得没有多少什么好的想法。今天选择这个标题是因为自己曾经加入一个讨论c++的QQ群(现在已经被我退群了,有种想再加入的冲动),有人问到怎么样将一个结构体快速的从文件进行读写,那时自己的想法就是打开文件-》读入缓存-》从缓存中读取,虽然觉得这个方法很笨,但是自己也没有好的办法。然而,就在刚才自己在学习面试宝典的过程中,发现了内在映射文件技术。这当然是一个很有历史的技术
把结构体写入文件然后读出【c语言】
把结构体写入文件然后读出【c语言】 用C语言实现。把结构体写入文件,然后再读取出来并显示; /* structinfile .c *  Auther: tweety *  date: 2009-12-04  */ #include  typedef struct Filenode {      int isempty;      char * data;
C语言文件写入结构体的乱码解决方法
C语言中用 fwrite 向文件写入结构体时出现乱码的解决方法,由于fwrite是用于二进制文件的,所以打开直接写入的文件是会出现乱码,这时需要一个中间文件来存储临时数据,就是先将数据存储在一个临时文件,然后从这个数据中读取出来在写入目标文件。也许我描述的不是很好,下面看看我写的一个例子或许你就会明白我说的是什么了。 #include int main () {   FILE
如何实现结构体和文件之间实现读写--fopen文件流读写(fscanf/fprintf)
如何实现结构体和文件之间实现读写--fopen文件流读写(fscanf/fprintf) 目的: #1. 把结构体数据写入文件; #2. 把文件中数据到处到结构体; 用到的函数: FILE *fopen(const char *path, const char *mode); int fscanf(FILE *stream, const char *format, ..
结构体含有指针的写入文件
将结构体,以二进制的形式存放到文件中,并且可以实现读的接口,打印读出来信息 #include #include #include typedef struct Student { char *name; //名字 int id; int name_len; //名字长度 }Stu; void write_file() { FILE *fp = NULL; //以写方式打开文件
把结构用二进制方式写入文件,并读出来
很简单,但是经常被问及的问题。下面的代码是C语言写的,将一个结构student用二进制的方式写入文件e:/fle.bxt中,并读取出来。#include #include struct student{    int num;    char name[10];    float score;}; main(){         char* file
C语言中结构体写入文件中,再从文件中读取,更新文件等
对于C语言文件中相应的读写操作,一般用的函数 fOpen, fRead, fWrite ,fSeek,rewind,ftell,fCloseFILE *fp; FILE *pfile;typedef struct tagUSEROPTINFO{ long   m_UserCount;         char   m_szUser[64];               }OTPININFO,*LPUSEROPTINFO;文件中指针的移动是个头疼的问题,还好用关键代码段来控制文件的单线程操作关键代码段(临界区
fread和fwrite对结构体数组从文件读入或写入
从键盘输入4个学生数据,把他们转存到磁盘文件中去 重点内容#define _CRT_SECURE_NO_WARNINGS #include <stdio.h>#define SIZE 2 struct student_type { char name[10]; int num; int age; char addr[15]; }stud[SIZE]; main()
c++将struct中的内容写入txt文件的方法(含嵌套struct情况)
C++语言继承了C语言的struct,并且加以扩充。在C语言中struct只能定义数据成员,而不能定义成员函数。而在C++中,struct类似于class,在其中既可以定义数据成员,又可以定义成员函数。结构类型是用户定义的复合类型,它可由不同类型的字段或成员构成。在C++中,struct与class基本是通用的,唯一不同的是如果使用class关键字,类中定义的成员变量或成员函数默认都是privat