c - 在c中更新文件记录的最佳方法是什么?

标签 c io

我有一个类似于通常使用的学生结构的结构,并且我在一个文件中存储多个记录。我希望能够更新文件内的字段,但我不确定哪种方式最好。

加载内存中的所有记录,进行更改,然后用更改重写文件? 或者制作一个tmp文件,找到要更新的数据将所有数据复制到tmp文件中删除旧文件并将tmp重命名为原来的名称?

欢迎大家提出不同意见! 谢谢!

最佳答案

第一个是如果写入出现问题,则存在文件损坏的风险。

第二个是最安全的,但涉及磁盘上的数据的两个副本。它还需要更多文件权限(删除文件、创建新文件、重命名等)。顺便说一句,在支持它的系统上,您可能希望让重命名操作为您删除原始文件,而不需要单独的删除步骤。

如果文件很大,这两种方法都不切实际。在这种情况下,您可能需要就地更新数据。处理可能的腐败更为复杂——也许需要维护日记。

关于c - 在c中更新文件记录的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8347297/

相关文章:

c - 在 C 中的 I/O 期间打印的交替行

java - 编写这段代码,以便它读取给定文件的前 8 个字节

ruby - 在 Ruby 中打印可编辑到控制台

python - 对行长度未知的大文件进行二进制搜索

c - 如何用一个函数获取没有重复值的数组

c - 如何将二维字符指针发送到内存分配函数?

c - 在 linux : differences between canonical and non-canonical methods 中写入 C 中的串行端口

java - 简单的Java网络IO不适用于大数据

c - "Program received signal SIGSEGV , Segmentation fault” 尝试使用递归获取所有3字符组合的关键字时

c - 涉及将文件读入 C 中的 char 数组的警告