从文件中删除记录?

bra*_*ess 3 c file-io file

我正在使用文本文件来存储我的数据记录.数据以下列格式存储.

Antony|9876543210
Azar|9753186420
Branda|1234567890
David|1357924680
John|6767676767

成千上万的记录存储在该文件中.我想删除一个特定的记录,比如"David | 1357924680".我正在使用C,如何有效地删除特定记录?目前我正在使用临时文件通过省略我想删除的记录将记录复制到该临时文件.复制到临时文件后,我通过截断原始文件的所有内容将临时文件的内容复制到原始文件.我不认为我这样做有效.帮我.

Rob*_*nes 7

在数据中添加一列,表明它是有效(1)或删除(0)行:

Antony|9876543210|1
Azar|9753186420|1
Branda|1234567890|1
David|1357924680|1
John|6767676767|1
Run Code Online (Sandbox Code Playgroud)

如果要删除记录,请覆盖单个字节:

Antony|9876543210|1
Azar|9753186420|1
Branda|1234567890|0
David|1357924680|1
John|6767676767|1
Run Code Online (Sandbox Code Playgroud)

布兰达现已删除.

然后添加一个数据文件压缩函数,该函数可用于重写除已删除行之外的文件.这可以在低使用或无使用期间完成,因此它不会干扰常规操作.

编辑

有效性列可能应该是第一列,因此您可以更轻松地跳过已删除的行.


sci*_*gor 5

我认为你的方法有点不对劲.如果你真的想有效地使用数据库,例如sqlite.它是一个简单的文件中使用简单的数据库.但它提供了很多sql的功能,并且效率很高.所以添加新条目和删除不会成为一个问题(也很容易搜索).请查看:http://www.sqlite.org/.这是一个3分钟的教程,它将通过示例解释如何完成您在此处尝试完成的所有事情:http://www.sqlite.org/quickstart.html.