有没有一种特殊的方法可以从 c 中的文件中删除记录而不创建它的副本?

Is there a particular way to delete a record from a file in c without creating a copy of it?

我目前在程序中使用 fseek()。我还维护了一个字节数组,它跟踪 file.I 中打印的每一行的字节,我还使用了一个段树,以便更快地访问特定位置。另外,我不允许使用任何其他东西......(比如结构) 有办法吗?

也许有比这更好的选择 但你可以这样做

存储您要删除的位置指针。 //变量1 在另一个变量中存储删除操作必须结束的查找位置。

现在从删除必须结束的位置到文件末尾,将值读入缓冲区。现在再次返回到 variable1 并从该位置开始追加存储在缓冲区中的内容。追加操作完成后,最终添加 EOF。

更简单的方法,但更 memory/time 密集: 将整个文件读入缓冲区。现在将内容替换到缓冲区中。再次打开同一个文件,但在 "write" 模式下,并将缓冲区清空到文件中。这将在不创建新文件的情况下覆盖所有内容。

希望有人提出更好的解决方案:)