| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3116 人关注过本帖
标题:内存不能为read
只看楼主 加入收藏
keybord
Rank: 2
等 级:论坛游民
帖 子:53
专家分:25
注 册:2009-10-9
结帖率:66.67%
收藏
 问题点数:0 回复次数:10 
内存不能为read
我的代码是这样的:
#include "stdio.h"
struct type
{
    char name[10];
    int age;
    int haoma;
}std;
main(void)
{
    FILE *f1;
    f1=fopen("c:\king.dat","rb");
    while(!feof(f1))
    {
    fread(&std,sizeof(struct type),1,f1);
    printf("%s,%d,%d",std.name,std.age,std.haoma);
    }
}
在VC++里能调试出来,
但实际运行就会出现什么内存不能为read!!我自己研究了好久都不知道错在哪里?
搜索更多相关主题的帖子: 内存 read 
2010-03-04 09:14
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:0 
注意你fopen的路径表示,我没记错的话,C中是要用双杠~~~~
2010-03-04 14:11
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:0 
判断一下f1是否可用。

离恨恰如春草,更行更远还生。
2010-03-04 14:21
keybord
Rank: 2
等 级:论坛游民
帖 子:53
专家分:25
注 册:2009-10-9
收藏
得分:0 
f1是可用的 我用IF判断过
2010-03-04 15:27
XDZH
Rank: 2
等 级:论坛游民
帖 子:17
专家分:36
注 册:2009-8-7
收藏
得分:0 
注意,不能为read就是说你所涉及的东西超出了你所定义的范围,比如定义数组int a[4],在输出a[4]时就会说不能为read,只能到a[3],你自己再好好看看吧!
2010-03-04 18:05
keybord
Rank: 2
等 级:论坛游民
帖 子:53
专家分:25
注 册:2009-10-9
收藏
得分:0 
不是这样的啊 !我的字符数组里只存KING这4个字符不存在你所说的!我用fgetc(f1);也是一样的
郁闷
2010-03-05 09:25
zhuyunshen
Rank: 6Rank: 6
等 级:侠之大者
威 望:2
帖 子:212
专家分:455
注 册:2009-11-22
收藏
得分:0 
#include "stdio.h"
struct type
{
    char name[10];
    int age;
    int haoma;
}std;
main(void)
{
    FILE *f1;
    f1=fopen("c:\\king.dat","rb");
    while(!feof(f1))
    {
    fread(&std,sizeof(struct type),1,f1);
    printf("%s,%d,%d",std.name,std.age,std.haoma);
    }
}
2010-03-05 10:48
hanzhenddd
Rank: 5Rank: 5
等 级:职业侠客
帖 子:90
专家分:361
注 册:2010-3-4
收藏
得分:0 
回复 楼主 keybord
#include "stdio.h"
struct type
{
    char name[10];
    int age;
    int haoma;
}std;
main(void)
{
    FILE *f1;
    f1=fopen("c:\king.dat","rb");
    while(!feof(f1))
    {
    fread(&std,sizeof(struct type),1,f1);
    printf("%s,%d,%d",std.name,std.age,std.haoma);
    }
}

有几点疑问 你看下
!feof(f1)这个函数没有贴出来。。。
printf 输出应该有问题把? //掉  换个测试打印看看



还有一点就是 你没有为你结构体 申请空间malloc ..一旦循环过一次后,第二次有可能内存就越界了。。。


[ 本帖最后由 hanzhenddd 于 2010-3-5 20:57 编辑 ]
2010-03-05 20:54
邶风
Rank: 5Rank: 5
等 级:职业侠客
帖 子:287
专家分:335
注 册:2009-1-20
收藏
得分:0 
"c:\king.dat" -> "c:\\king.dat"
lz好好想想这是为什么
2楼正解

此外 error处理也要写出来 便于找原因

8楼的问题很低级无趣。std又不是指针,是一个实实在在的全局定义,何来malloc之有?

#include
2010-03-05 21:19
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:0 
回复 9楼 邶风
..终于有人支持我了。。
2010-03-05 21:22
快速回复:内存不能为read
数据加载中...
 
   



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

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