| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6498 人关注过本帖
标题:读取数据出现乱码怎么回事
只看楼主 加入收藏
a892502843
Rank: 1
等 级:新手上路
帖 子:17
专家分:4
注 册:2016-5-24
收藏
得分:0 
回复 7楼 吹水佬
我如果先前录入2个或者3个员工后,文件储存了然后再开程序读取员工,除了第一个是正常的后面的就有问题了

[此贴子已经被作者于2016-5-26 23:11编辑过]

2016-05-26 22:59
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用a892502843在2016-5-26 22:59:31的发言:

我如果先前录入2个或者3个员工后,文件储存了然后再开程序读取员工,除了第一个是正常的后面的就有问题了

试过更新后的代码未见这情况,删除“配置.ini”文件重新试试看。
2016-05-27 08:00
a892502843
Rank: 1
等 级:新手上路
帖 子:17
专家分:4
注 册:2016-5-24
收藏
得分:0 
以下是引用吹水佬在2016-5-27 08:00:34的发言:


试过更新后的代码未见这情况,删除“配置.ini”文件重新试试看。

我的代码?那我回寝室再试一试,你用的什么编译器
2016-05-27 08:49
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用a892502843在2016-5-27 08:49:57的发言:


我的代码?那我回寝室再试一试,你用的什么编译器

编译器配置:
TDM-GCC 4.8.1 32-bit Release
2016-05-27 09:06
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
再试了下确是有问题,多于2条记录时存取文件异常,再看看。
2016-05-27 09:23
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
问题在这里,读和写数据块的大小应该都是sizeof(employee)
//保存到文件中
void save(list *head)
{
        //if(fwrite(p,sizeof(list),1,fp)!=1)
        if(fwrite(p,sizeof(employee),1,fp)!=1)
}
2016-05-27 09:32
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
还有这里:
//读取文件中的数据
void Load(list *head)
{
            q=(list *)malloc(sizeof(list));
            if(q!=NULL)
            {
                if(1==fread(q,sizeof(employee),1,fp))
                {
                    p->next=q;
                    q->next=NULL;
                    p=p->next;
                }
                else
                {
                    free(q);  //加多一句,释放掉。
                    q=NULL;
                }
            }
        }
        while(q);
        fclose(fp);
    }
}
2016-05-27 09:37
a892502843
Rank: 1
等 级:新手上路
帖 子:17
专家分:4
注 册:2016-5-24
收藏
得分:0 
以下是引用吹水佬在2016-5-27 09:32:05的发言:

问题在这里,读和写数据块的大小应该都是sizeof(employee)
//保存到文件中
void save(list *head)
{
        //if(fwrite(p,sizeof(list),1,fp)!=1)
        if(fwrite(p,sizeof(employee),1,fp)!=1)
}

这次对了谢谢拉两个模块的字节大小不一样怪不得后面出乱码弄好了
2016-05-27 10:11
快速回复:读取数据出现乱码怎么回事
数据加载中...
 
   



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

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