| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 681 人关注过本帖
标题:读取文件时程序报错,调试了好久不知道如何解决
只看楼主 加入收藏
忘了_这一切
Rank: 3Rank: 3
来 自:星星
等 级:论坛游侠
威 望:1
帖 子:41
专家分:145
注 册:2014-4-25
收藏
得分:0 
额,这里确实错了,忘记加括弧了
但是执行void read_file()还是报相同的错误
2014-05-26 17:13
忘了_这一切
Rank: 3Rank: 3
来 自:星星
等 级:论坛游侠
威 望:1
帖 子:41
专家分:145
注 册:2014-4-25
收藏
得分:0 
回复 10 楼 wp231957
Windows 已在 student_system.exe 中触发一个断点。

其原因可能是堆被损坏,这说明 student_system.exe 中或它所加载的任何 DLL 中有 Bug。

原因也可能是用户在 student_system.exe 具有焦点时按下了 F12。

输出窗口可能提供了更多诊断信息。
依然是这样的错误,用断点调了半天就是不知道哪里错了
2014-05-26 17:15
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
后面的代码没有看,read代码里你只申请了一个Student大小的内存,却要s++,这样s会指向哪里?

总有那身价贱的人给作业贴回复完整的代码
2014-05-26 17:25
忘了_这一切
Rank: 3Rank: 3
来 自:星星
等 级:论坛游侠
威 望:1
帖 子:41
专家分:145
注 册:2014-4-25
收藏
得分:0 
回复 13 楼 embed_xuel
s=(Student *)malloc(sizeof(Student)*1000);

按照这样修改,也无济于事啊
2014-05-26 17:43
忘了_这一切
Rank: 3Rank: 3
来 自:星星
等 级:论坛游侠
威 望:1
帖 子:41
专家分:145
注 册:2014-4-25
收藏
得分:0 
问题请教高手后终于解决了,答案是在s=(Student *)malloc(sizeof(Student)*1000);后进行了一系列的s++,最后free(s)时由于s的地址已经发生改变,无法被free掉,导致程序崩溃。解决办法是
程序代码:
void read_file()
{
    
    FILE *fp_2;
    int mark;
    struct Student *s;

    s=(Student *)malloc(sizeof(Student)*1000);
    int p=(int)s;                                  //定义一个整形变量,让它保持s初始值
    if((fp_2=fopen("list_student.txt","rb"))==NULL)
        printf("打开文件失败");
    else
        while(fread(&mark,sizeof(int),1,fp_2)==1)
        {
            fflush(stdout);
            fread(s,sizeof(Student),1,fp_2);
            printf("读取数据成功\n");
            printf("%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s\n","姓名","学号","性别","年龄","成绩1","成绩2","成绩3","成绩4","总成绩","平均成绩");
            printf("%6s%6s%6s%6d%6d%6d%6d%6d%6d%6d\n",s->name,s->Id,s->sex,s->age,s->Cnum,s->Enum,s->Mnum,s->math,s->sum,s->average);
            s++;
        }
        /*system("pause");*/
        free((Student*)p);      //这里实际上释放的是s分配的内存
        fclose(fp_2);        
        

}
2014-05-26 18:20
快速回复:读取文件时程序报错,调试了好久不知道如何解决
数据加载中...
 
   



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

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