| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 749 人关注过本帖
标题:fwrite存文件,再用fread打开的问题
只看楼主 加入收藏
zenglw
Rank: 2
等 级:论坛游民
帖 子:38
专家分:17
注 册:2009-10-22
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:5 
fwrite存文件,再用fread打开的问题
程序代码:
#include<stdio.h>
#define SIZE 1
struct student_type
{
       char name[10];
       int num;
       int age;
       char addr[15];
}stud[SIZE];

void save()
{
     FILE *fp;
     int i;
     if((fp=fopen("list","wb"))==NULL)
     {
        printf("cannot open file\n");
        return;
     }
     for(i=0;i<SIZE;i++)
        if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)
           printf("file write error!\n");
     fclose(fp);
}


int main()
{
    int i;
    for(i=0;i<SIZE;i++)
       scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);
    save();
   
}
先用这个输入数据到“list”文件中     输入:Han 1001 21 room1
图片附件: 游客没有浏览图片的权限,请 登录注册


程序代码:
#include<stdio.h>
#define SIZE 1
struct student_type
{
       char name[20];
       int num;
       int age;
       char addr[15];
}stud[SIZE];

int main()
{
    int i;
    FILE *fp;
    fp=fopen("list","rb");
    for(i=0;i<SIZE;i++)
    {
       fread(&stud[i],sizeof(struct student_type),1,fp);
       printf("%s\n%d\n%d\n%s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr);
    }
    fclose(fp);
   
}
再用这个打开“list”文件,但是结果是。。
Han
1836019570
49
(第4行什么都没有)
图片附件: 游客没有浏览图片的权限,请 登录注册
    问题出在哪。。谢谢各位了

[ 本帖最后由 zenglw 于 2010-3-13 11:03 编辑 ]
搜索更多相关主题的帖子: fwrite fread 文件 
2010-03-13 11:00
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1705
专家分:4345
注 册:2007-12-27
收藏
得分:10 
显然你两个程序里面的结构体定义不同,造成了这个问题。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2010-03-13 11:06
zenglw
Rank: 2
等 级:论坛游民
帖 子:38
专家分:17
注 册:2009-10-22
收藏
得分:0 
回复 2楼 forever74
那要怎么解决?谢谢了。。
2010-03-13 11:07
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1705
专家分:4345
注 册:2007-12-27
收藏
得分:0 

改成相同就可以了

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2010-03-13 11:10
陈大师
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:231
专家分:1038
注 册:2009-11-4
收藏
得分:10 
粗心造成的 哈哈
你一个结构体数组中定义了 char name[10];
另一个结构体数组中定义了 char name[20];
改成相同大小就行了
2010-03-13 11:26
zenglw
Rank: 2
等 级:论坛游民
帖 子:38
专家分:17
注 册:2009-10-22
收藏
得分:0 
哈。。谢谢
2010-03-13 11:45
快速回复:fwrite存文件,再用fread打开的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.083253 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved