易码技术论坛

 找回密码
 加入易码
搜索
查看: 324826|回复: 10

求助 关于LAVA读文件的速度

[复制链接]
发表于 2007-9-30 19:04:43 | 显示全部楼层
结构.....
直接读结构..
大型RPG中..因为变量都是生命什么的,所以用结构把相关的串起来

struct a
{
char ex;
char hp;
};
这样读时
fread(a,1,sizeof(struct a),fp);
用的时候
a.ex=~~~
a后面加.然后加之后的定义变量

至于地图id什么的直接用map[80*90](我自己做时)....基本瞬间读好的
最多使用时算下...

不要用for(;;)什么的..
发表于 2007-9-30 19:06:21 | 显示全部楼层
新手呵
 楼主| 发表于 2007-9-30 19:07:35 | 显示全部楼层
偶是菜鸟不懂那么多啊
能不能说详细点
好心人就给我写出来吧 555555555555
 楼主| 发表于 2007-9-30 19:21:16 | 显示全部楼层
那偶的DAT里都是放的程序用到的字符串
也是那样吗
发表于 2007-9-30 19:22:04 | 显示全部楼层
一样的.也可以
字符串如果不常用到,就随用随读
 楼主| 发表于 2007-9-30 20:30:11 | 显示全部楼层
像这样写不行啊
struct a
{
char ex;
char hp;
};
void mian()
{
char fp;
fp=fopen("\LavaData\123.dat","r");
fread(a,1,sizeof(struct a),fp);
}


Compiling...
1 PASS OK!
2 PASS OK!
错误:未定义的变量发生在10行
发表于 2007-9-30 21:43:10 | 显示全部楼层
....
把fread(a,1,sizeof(struct a),fp);其中的第一个a换掉...重新用struct a b;定义下

struct a
{
char ex;
char hp;
};
struct a b;
void mian()
{
char fp;
fp=fopen("\LavaData\123.dat","r");
fread(b,1,sizeof(struct a),fp);
fcolse(fp);
}


运行时如果你没把123.dat放在LavaData里它会报读地址错误...
发表于 2007-9-30 22:02:58 | 显示全部楼层
学习了啊。。
 楼主| 发表于 2007-10-4 15:29:48 | 显示全部楼层
如果我要这么读
struct read
{
char a[26];
char b[26];
char c[26];
}er[100];
也就是DAT文件中存者7800个字节
都是字串
而我要给结构中每个变量赋13个汉字
总共有100组
用的时候想这样子用 printf("%s\n%s\n%s\n",er[0].a,er[0].b,er[0].c);
该怎么读呢
发表于 2007-10-4 23:53:34 | 显示全部楼层
学习了。。。
 楼主| 发表于 2007-9-30 18:59:29 | 显示全部楼层 |阅读模式
  我的DAT格式是这样的
类型A*26*100+类型B*26*100+类型C*26*100
总共7800字节
偶是这样读的
void main()
{
char a[26][100];//A类型长度每个26 共100个下标
char b[26][100];
char c[26][100];
char fp;
int f;
if (fp=(fopen("/123.dat","r"))==0)
{
exit(0);
}
for (f=0;f<100;f++)
{
fread (a[f],1,26,fp);
fread (b[f],1,26,fp);
fread (c[f],1,26,fp);
}
}
这样读得很慢 差不多等了10秒多
那些大型RPG的数据更大 都是怎么读得啊
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2025-4-29 18:36 , Processed in 0.019992 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表