| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2343 人关注过本帖
标题:读写大文件失败!怎么解决呢?(dos)
取消只看楼主 加入收藏
grub2linux
Rank: 1
等 级:新手上路
帖 子:335
专家分:0
注 册:2004-12-25
收藏
 问题点数:0 回复次数:3 
读写大文件失败!怎么解决呢?(dos)
读写大文件失败!怎么解决呢?

这两天准备把 备份 恢复MBR,DBR,CMOS,FAT等功能写成一个程序,
这样方便很多,其它功能都做好了,就剩 读写FAT, 始终不成功
原因是,可能对DOS来说有点大了(要几 M的)
试了很多方法都不行。。。
不知道哪位知道的, 说一下方法,最好 贴出 源码。。

下面是我代码:

#include <dos.h>
#include <bios.h>
#include <stdio.h>
#include <iostream.h>
#include <fstream.h>

void main()
{
FILE *f;
unsigned char *fat=new unsigned char[2245120];;

biosdisk(2,0x81,1,0,39,4385,fat);
if((f=fopen("c:\\int86.fat","wb+"))==NULL)
{
printf("Error File\n");
return;
}

fwrite(fat,512,4385,f); //这里 改成 (fat,4385*512,1,f) 就死机 !

fclose(f);

}

用先建一个空文件再用循环追加(改变源缓冲指针)的方式,读入的数据好像有问题
用fputc()一个一个的处理,也不行
不知道那里出了问题。。

下面用 C++也不行:(只写了很少的字节)
ofstream fi("c:\\int86.fat",ios::out);
fi << fat;


有缘相识! 我中文系的
半个月拿下基本C
一个月拿下基本C++
两个月拿下基本VC
一星期拿下一半基本JAVA
五天写DOS游戏
两个月写DOS游戏系统
年后一个月拿下VFP
过一下 ACCESS, SQL SERVER
与大家一起加油啊! 很喜欢这句
"拿下!"
http://mykool.go2.icpcn.com
搜索更多相关主题的帖子: dos include 文件 失败 FAT 
2006-06-25 20:42
grub2linux
Rank: 1
等 级:新手上路
帖 子:335
专家分:0
注 册:2004-12-25
收藏
得分:0 
多谢关注啊!
没太明白你的代码。
我是要把第二硬盘的C盘的DBR后的第39扇区开始读4385个扇区(就是我的FAT)到文件
主要有几个问题,想请教一下:
一,biosdisk是怎么运转的?
TC3的帮助说:(2,0x81,1,0,cur_sect,MAXBUF,buffer) 的1,0,cur_sect指定了要处理的起始的扇区位置
MAXBUF是要处理的扇区的个数。 这里的个数有限制吗?(好像是INT型,就是说最大可处理65535个扇区啊
我的4385是在范围内啊。。为什么要弄个1024呢,是不是后面的FWRITE()有限制?)
二,FWRITE()的参数是不是有限制?

有缘相识!我中文系的 3月拿下C/C++/VC 5天写游戏 2月写游戏系统 有空去http://mykool.go2.
2006-06-26 10:32
grub2linux
Rank: 1
等 级:新手上路
帖 子:335
专家分:0
注 册:2004-12-25
收藏
得分:0 

感谢yuki啊,挺热心的啊,
不过,试了很多次,已经弄明白了原因了。。
主要是BIOSDISK的扇区读取限制和FWRITE的字节读取限制。。

看了您的代码,没有随后调整起始磁头,柱面,扇区的物理位置,可能不行的
因为要读取的扇区只有在前面三样东西不变的情况下才有效的吧?

(况且,就算没问题,由于是以 一个扇区为单位处理的,可能效率太低了。。)

我终于解决了,不敢独享,现吧代码贴出来,供大家交流。。。
(我是主要以同一磁道内的63个扇区为单位读写的,效率比较高,测试过,感觉效率比Norton diskedit还要高,,)

************************************

下面是我的帖子的地址:
http://bbs.bc-cn.net/bbs/dispbbs.asp?boardID=5&ID=75296&page=1


有缘相识!我中文系的 3月拿下C/C++/VC 5天写游戏 2月写游戏系统 有空去http://mykool.go2.
2006-06-28 01:33
grub2linux
Rank: 1
等 级:新手上路
帖 子:335
专家分:0
注 册:2004-12-25
收藏
得分:0 
彼此交流,能有帮助,我很高兴啊!
共同进步吧。。。

有缘相识!我中文系的 3月拿下C/C++/VC 5天写游戏 2月写游戏系统 有空去http://mykool.go2.
2006-07-01 01:41
快速回复:读写大文件失败!怎么解决呢?(dos)
数据加载中...
 
   



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

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