文件读写问题

abcd_abcd 2008-10-09 03:00:34
现在有个很大的文件,20多M,十万来行.
1. 除了用标准i/o接口外,如何提高文件读写速度
2. 现在碰到的一个问题: 用C++标准i/o来读取写入的. 读取写入2分钟后,就会弹出一个对话框提示:xx.exe文件遇到错误,对此引起的不便感到抱歉啥的.
请问这会是什么原因引起的??文件太大,缓存忙不过来吗?弹出对话框之前处理的数据都是对的.还有小文件测试的时候也是对的.


哦,我用的编译器是: VS2003.net
...全文
115 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
nsdcnsdc 2008-10-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 anglecloudy 的回复:]
不过20M对于标准的IO来说应该不算很大,呵呵,你那个错误,应该是程序里面有些地方错误


C/C++ code

char *buffer=new char[20*1024*1024];//这个地方对于20M来说应该用动态分配,不然会出错
int fileLen;//文件大小
int readLen;//读取的文件长度
FILE* cf=fopen("d://test.txt","r");
readLen=fread(buffer,sizeof(char),20*1024*1024,cf);
fseek(cf,0L,SEEK_END);
fileLen=ftell(cf);
printf("%d\n",fileL…
[/Quote]

把要读的文件大小限定死了20M。如果文件实际大小不足20M,比如小了一两个字节那读时读到了文件尾,再往下读自然会出错。建议先取文件大小。
jia_xiaoxin 2008-10-09
  • 打赏
  • 举报
回复
操作大文件最好用CreateFileMapping来创建文件映射。
xdxiaodao 2008-10-09
  • 打赏
  • 举报
回复
同意楼上,把代码贴出来看看
xdxiaodao 2008-10-09
  • 打赏
  • 举报
回复
同意楼上,把代码贴出来
野男孩 2008-10-09
  • 打赏
  • 举报
回复
代码有问题呗。贴出来吧。
abcd_abcd 2008-10-09
  • 打赏
  • 举报
回复
稍微改了下,现在又是runtime error!!!咋回事呢.
OenAuth.Net 2008-10-09
  • 打赏
  • 举报
回复
G级别的文件对IO来说才算比较大的文件,处理起来有点复杂,M级别重复读写就行了。
OenAuth.Net 2008-10-09
  • 打赏
  • 举报
回复
G级别的文件对IO来说才算比较大的文件,处理起来有点复杂,M级别重复读写就行了。
abcd_abcd 2008-10-09
  • 打赏
  • 举报
回复
有些地方错误??
那文件很小的时候没问题啊,还有如果有逻辑错误,那一开始就应该出错啊,而结果也不应该对才是了.

再来看下程序.
zclever 2008-10-09
  • 打赏
  • 举报
回复
20M不算大啊,开辟缓冲区,重复读写就行了。
OenAuth.Net 2008-10-09
  • 打赏
  • 举报
回复
不过20M对于标准的IO来说应该不算很大,呵呵,你那个错误,应该是程序里面有些地方错误



char *buffer=new char[20*1024*1024];//这个地方对于20M来说应该用动态分配,不然会出错
int fileLen;//文件大小
int readLen;//读取的文件长度
FILE* cf=fopen("d://test.txt","r");
readLen=fread(buffer,sizeof(char),20*1024*1024,cf);
fseek(cf,0L,SEEK_END);
fileLen=ftell(cf);
printf("%d\n",fileLen);
printf("%d\n",readLen);
fclose(cf);

OenAuth.Net 2008-10-09
  • 打赏
  • 举报
回复

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧