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

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

请大牛

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

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

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

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

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