假设我有一个100行的文本文件.我只想改变第50行的内容.
一种方法是打开文件进行输入并打开一个新文件进行输出.使用for循环逐行读取文件的前半部分并逐行写入第二个文件,然后写下我想要更改的内容,然后再次使用for循环写出后半部分.最后,我重命名新文件以覆盖原始文件.
除此之外还有另一种方法吗?一种修改文件中间内容而不触及文件其余部分并且不再写入所有内容的方法?
如果有,那么代码是做什么的?
(复制自我对你上一个问题的评论)
嗯,这取决于您使用的I/O库,C标准库,C++标准库或特定于操作系统的API.但通常有三个步骤.打开文件时,指定不带截断的写访问权限,例如fopen(fname,"r +").用例如fseek寻找所需的位置.用例如fwrite或fprintf写新字符串.在某些API中,如Windows OVERLAPPED或Linux aio,您可以说"写入此位置"而无需单独的搜索步骤.