| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1686 人关注过本帖
标题:fwrite写入后fread读取不出来问题,求帮助
只看楼主 加入收藏
cnnidajie
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-2-11
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
fwrite写入后fread读取不出来问题,求帮助
程序代码:
nzmc * tmpMusic = new nzmc[numRow];

        for(int i = 0; i < numRow; i++)
        {
            row = mysql_fetch_row(res);

            /* 循环保存在结构体中 */

                tmpMusic[i].mcName = row[1];
                tmpMusic[i].mcJp = row[2];
                tmpMusic[i].comm = atoi(row[3]);
        }

        if(access(FILEJ, 0) == -1)
                mkdir(FILEJ);

            FILE * fp;

            if((fp = fopen(FILEJ"\\data.dat", "w+b")) == NULL)
                return -7;

            fwrite(&tmpMusic[0], sizeof(nzmc), numRow, fp);

            if(ferror(fp))
                return -8;

            delete [] tmpMusic;
            fclose(fp);

            fileRead();
    }


    int fileRead(void)
    {
        nzmc * tmpnc = new nzmc[1000];
        FILE * fp = NULL;

        if((fp = fopen(FILEJ"\\data.dat", "r+b")) == NULL)
            return -9;

        int tmp = 0;

        while (!feof(fp))
        {
            fread(&tmpnc[tmp], sizeof(nzmc), 1, fp);
            tmp++;
        }
其中 ,结构体数组中的一项数据为:
{"月亮代表我的心","g:150|q:150|e:150|t:150|q:150|j:150|e:150|t:500|t:150|y:150|u:150|p:150|y:150|t:500|e:150|w:150|q:150|q:150|q:500|e:150|w:150|q:150|q:150|q:500|w:150|e:150|w:150|q:150|h:150|w:150|e:150|w:500|g:150|q:150|e:150|t:150|q:150|j:150|e:150|t:500|t:150|y:150|u:150|p:150|y:150|t:500|e:150|w:150|q:150|q:150|q:500|e:150|w:150|q:150|q:150|q:500|w:150|e:150|w:150|h:150|j:150|q:150|w:150|q:500|e:150|t:150|e:150|w:150|q:150|t:150|j:500|h:150|j:150|h:150|j:150|h:150|g:150|e:500|t:150|e:150|w:150|q:150|t:150|j:500|h:150|j:150|q:150|q:150|q:150|w:150|e:150|w:500|g:150|q:150|e:150|t:150|q:150|j:150|e:150|t:500|t:150|y:150|u:150|p:150|y:150|t:500|e:150|w:150|q:150|q:150|q:500|e:150|w:150|q:150|q:150|q:500|w:150|e:150|w:150|h:150|j:150|q:150|w:150|q:500|",0},

结构体数组有很多由上面数据组成,但是写入文件,使用fread批量读取出来以后,只能读取“月亮代表我的心”和“0”,中间的一大串曲谱读取不出来,显示为空,且请高手查看代码给予帮助。谢谢了



[ 本帖最后由 cnnidajie 于 2013-2-11 09:43 编辑 ]
2013-02-11 08:43
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
你下面这个数据格式看起来不像是用二进制输出的

授人以渔,不授人以鱼。
2013-02-11 13:09
青春无限
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江苏
等 级:贵宾
威 望:24
帖 子:3452
专家分:19340
注 册:2012-3-31
收藏
得分:10 
看看

学 会看代码…学习写程序…学会搞开发…我的目标!呵呵是不是说大话啊!!一切皆可能
2013-02-11 19:34
cnnidajie
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-2-11
收藏
得分:0 
回复 2楼 TonyDeng
可是打开方式是用的r+b,是二进制格式啊
2013-02-11 20:16
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
用fwrite()写出去形成的文件才是真正的二进制格式,不是指用"b"打开的。你那个文件,明显就是文本格式的,二进制格式的文件,里面的数字是乱码,不会是这样你看得见的。也就是说,不是用fwrite()写成的数据,也不能用fread()读回来。

授人以渔,不授人以鱼。
2013-02-11 21:46
cnnidajie
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-2-11
收藏
得分:0 
回复 5楼 TonyDeng
我那个不是说用fwrite形成的文件啊,而是写入进去的结构体数据。。。。
2013-02-12 20:53
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用cnnidajie在2013-2-12 20:53:11的发言:

我那个不是说用fwrite形成的文件啊,而是写入进去的结构体数据。。。。

我又没看见你写出来的文件到底是怎样的,哪知道你读出来不对是怎么回事。你真以为放个代码就知道哪不对了?

授人以渔,不授人以鱼。
2013-02-13 14:57
快速回复:fwrite写入后fread读取不出来问题,求帮助
数据加载中...
 
   



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

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