LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1831|回复: 6

关于fopen打开文件并修改的问题

[复制链接]
发表于 2008-4-12 12:14:05 | 显示全部楼层 |阅读模式
我现在有一个1M的文件flas.men,我想在原来的基础上对其进行修改,
如果用(fp=fopen("flash.mem", "wb"))的话 ,会把原来的整个文件删除掉,而我只是想对其修改,我不想用一个1M的缓冲区先读出,修改,再写入。
请问有什么建议。
发表于 2008-4-13 11:33:12 | 显示全部楼层
用 "rb+" 或者 "wb+" 替代 "wb" 如何?现在手边没机器,查不到手册,楼主自己 man fopen 看看吧
回复 支持 反对

使用道具 举报

发表于 2008-4-14 16:48:17 | 显示全部楼层
"rw"
fseek
fread
fwrite
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-19 15:58:19 | 显示全部楼层
(fp=fopen("flash.mem", "rb+"))就可以了
回复 支持 反对

使用道具 举报

发表于 2008-4-19 16:49:41 | 显示全部楼层
我记得用"r+“的时候,读是从头开始,写是从最后开始,好像无法fseek到前面去write
莫非我记错了~~~
回复 支持 反对

使用道具 举报

发表于 2008-4-20 23:41:16 | 显示全部楼层
我觉得修改一个文件很困难~
w方式打开会把原来内容删掉,a只能加在文件尾
所以只能用“+”的方式(修改方式),但这也有问题
w+也会把文件原来内容删掉
a+也是会把内容加在文件尾,无法用fseek
r+是最好的了,但调用fseek定在某个位置之后,再写入数据的话,它不是把数据插入到那个位置,而是写的时候把那个位置之后的内容都覆盖掉了!

所以我想如果要真正插入的话是不是非要用到缓冲区不可呢??
回复 支持 反对

使用道具 举报

发表于 2008-4-21 10:07:51 | 显示全部楼层
从 FS 的角度来看, 插入数据本身就不是一件省心的事.

刚才试了一下, 确实用 "rwb+" 才能完成读写的自由定位
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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