| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1627 人关注过本帖
标题:为用fread报错
只看楼主 加入收藏
依旧我心
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2018-3-1
结帖率:0
收藏
已结贴  问题点数:10 回复次数:5 
为用fread报错
int Load()
{
    ListNode *p = pHead;
    ListNode *newNode = (ListNode*)malloc(sizeof(ListNode));
    FILE *pf = fopen("d:\\1.txt", "r");
    if (!pf)
    {
        puts("文件打开失败");
        exit(0);
    }
        while (fread(p,1,sizeof(ListNode),pf))
    {
        newNode->data = pd;
        newNode->pNext = NULL;
        if (!p)
        {
            p= newNode;
            return 0;
        }
        else
        {
            while (p->pNext)
            {
                p = p->pNext;
            }
            p->pNext = newNode;
        }
    }
    fclose(pf);
    return 1;
}
为什么只要走到    while (fread(p,1,sizeof(ListNode),pf))这步就报错,异常,请高手指点一下。
搜索更多相关主题的帖子: fread 报错 sizeof while return 
2018-06-17 11:01
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1705
专家分:4345
注 册:2007-12-27
收藏
得分:3 
你得说明报什么错,异什么常,
另外你的全局变量和自定义类型是怎么定义的。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2018-06-17 13:55
星泪成寒
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:6
帖 子:77
专家分:549
注 册:2013-5-19
收藏
得分:3 
你在windows下编程,
所以fopen读取存储结构(二进制数据)时 应该用 "rb" 而不是 "r"
2018-06-21 09:54
ab1412
Rank: 7Rank: 7Rank: 7
来 自:M78星球
等 级:黑侠
威 望:4
帖 子:103
专家分:537
注 册:2018-3-15
收藏
得分:3 
fread函数参数写错了吧,应该是fread(p,sizeof(ListNode),1,pf)吧。

printf("萌新一枚,请多指教");
2018-06-21 13:35
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
收藏
得分:3 
以下是引用ab1412在2018-6-21 13:35:32的发言:

fread函数参数写错了吧,应该是fread(p,sizeof(ListNode),1,pf)吧。

他这种用法没什么大错误,只是不严谨而以。fread(p,sizeof(ListNode),1,pf)是读取1个数据项,每个数据项是sizeof(ListNode)字节。fread(p,1,sizeof(ListNode),pf)是读取sizeof(ListNode)个数据项,每个数据项是1字节。无论如何,底层都是读取sizeof(ListNode) * 1个字节。
2018-06-21 20:38
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
收藏
得分:0 
ListNode *p = pHead;这一行中,pHead这个变量的值从何而来?如果贴出的代码就是Load()函数完整的代码,那么编译都不通过。如果不是原始代码,你自己检查以下pHead的赋值情况,看看是不是NULL。
2018-06-21 20:41
快速回复:为用fread报错
数据加载中...
 
   



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

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