首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

如何只修改文件的某一行的内容,其他行的内容不变

2012-05-24 
怎么只修改文件的某一行的内容,其他行的内容不变如题, 用fopen就要么追加,要么全部改写文件内容,不知道怎

怎么只修改文件的某一行的内容,其他行的内容不变
如题, 用fopen就要么追加,要么全部改写文件内容,不知道怎么弄

请大牛

[解决办法]
全部读进来,修改完成后在重新写到文件里.
[解决办法]
fseek()或_fseeki64()到修改的位置,再fwrite()
[解决办法]
用fseek()到修改的位置,再fwrite()时会擦掉以前的。
比如有个文件里存着 zbcdefg
使用fseek()到首位置,再用fwrite()写 123
文件内容会变成 123defg

可是,大多数情况下,我们并不希望这样的结果,我们希望结果是123abcdefg

这样的话,我们只能像 #1 说的那样,全部读进来,改完了再写回去。
这时,如果文件太大,是不能全部读进来的,得一点儿点儿读,然后写进新文件里。

[解决办法]
如果是担心效率问题,这没有办法,目前来说还没有什么样的文件系统是按行来存储的,要对文件按行来处理只能是读到内存里再进行处理.

其实 sed 命令就是专门处理这种问题的,也有 GNU sed 的开源版本, 可以研究下它的源代码看有些什么优化的办法.
[解决办法]
google sed

热点排行