有没有从打开的文件中删除某些东西的基本方法

当你用fopen打开一个.txt文件 有没有什么办法可以在不重写的情况下删除文件中的一些字符串。有没有从打开的文件中删除某些东西的基本方法

例如,这是我将用fopen()打开的txt文件;

------------- 

1 some string

2 SOME string

3 some STRING

-------------

我想删除它的第一个字符为2的行,它变成

------------- 

1 some string

3 some STRING

-------------

我的解决方案; 首先读取所有数据并将其保存在字符串变量中。然后用w模式打开同一个文件。并且再次写入数据,除了第2行。(但这不符合逻辑我正在寻找一个更简单的方法在C ...) (我希望我的英语不是问题)

回答:

最简单的方法可能是记忆 - 使用mmap映射整个文件。使用mmap,您可以将文件作为长内存缓冲区访问,您可以通过在磁盘上反映更改来修改该内存缓冲区。然后您可以找到该行的偏移量,并将文件的整个尾部移回许多字节以覆盖该行。

回答:

对于顺序文件,无论使用什么技术删除第2行,都必须将文件写回磁盘。

回答:

你不应该覆盖文件,更好的办法是打开另一个(临时)文件,写入内容,然后删除旧文件并重命名文件。所以如果发生问题会更安全。 我认为最简单的方法就是

  1. 读取整个文件
  2. 修改内存内容
  3. 写回临时文件
  4. 删除原始文件
  5. 重命名临时文件到原始文件

声音对我来说不太不合逻辑

以上是 有没有从打开的文件中删除某些东西的基本方法 的全部内容, 来源链接: utcz.com/qa/257607.html

回到顶部