不理解的问题 c高手进

azazlr 2005-12-20 08:27:38
一个文件有700M,比内存还大。想把这个文件里面是'a'全部去掉。
不能把文件全部读到内存。所以先fread 100个字节到数组。
然后就不知道怎么做了。
一般是读出来,把数组的'a'去掉,再写到文件。但边读边写吗?
希望有代码看看。
...全文
436 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
庄鱼 2005-12-21
  • 打赏
  • 举报
回复
使用流方式可以在不用考虑内存问题。通过指针搬移的方法,虽然仅仅几兆内存,依然可以处理GB级文件。
rainharder 2005-12-20
  • 打赏
  • 举报
回复
mark

要是替换的字符串比原串长,有没有好的方法

顺便问问修改文件大小如何实现的
庄鱼 2005-12-20
  • 打赏
  • 举报
回复
如果不想建新文件的话,关键在于看你是不是想删除这个字符,还是仅仅替换掉。
如是替换的话,就在原'a'处用' '或其它控制符替代,这比较简单。删除也很容易,仅需增加2个指针即可。
定位1 = 定位2 = 0;
while(!文件尾){
定位1++;
if(当前字符!='a'){
移动到 定位2
写当前字符;
定位2++;
移动到 定位1;
}
}
修改文件大小=定位2;
关闭文件
很久没使用fopen了,有些函数用法都已经生疏了。只能写个算法思路。
terryjwf 2005-12-20
  • 打赏
  • 举报
回复
又见mm,偶顶!
azazlr 2005-12-20
  • 打赏
  • 举报
回复
fiftymetre(我手机坏了)

就不想要新建文件的方法

还有吗?
xxyifan 2005-12-20
  • 打赏
  • 举报
回复
自己先试试看,再来问,
呵呵!~
rbofnjtu 2005-12-20
  • 打赏
  • 举报
回复
fiftymetre(我手机坏了) 已经说得很清楚了,另外新建一个文件,从你要处理的文件中依次读入字符(直到读到文件尾,表示已经读完),对读入的每一个字符进行判断,如不为‘a’则依次写入到新建的文件中。
haiyan_shang 2005-12-20
  • 打赏
  • 举报
回复
用fseek函数实现定位,读到哪里,到下次打开读另外100个时就把光标定位到那里。
fiftymetre 2005-12-20
  • 打赏
  • 举报
回复
边读边写,一边用fgetc读,判断是不是a,不是的话用fputc写到另外一个文件
qimans 2005-12-20
  • 打赏
  • 举报
回复
700M 不能把文件全部读到内存?
________________________
你是用PC机做的吗?你把虚拟内存调大点试一下
一般机器都会支持虚拟内存的

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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