【发布时间】:2014-12-19 04:38:34
【问题描述】:
到目前为止我提到的所有代码都使用临时文件从文件中删除记录。
例如:
fp=fopen(“foo.db”,”rb”);
ft=fopen(“temp.db”,”wb”);
//check both files opened or created successfully. Terminate program accordingly
while(fread(&foo,sizeof(Foo),1,fp))
{
if(record matched)
{
//skip this record
}
else
{
//write a record in temp file
fwrite(&foo,sizeof(Foo),1,ft);
}
}
fclose(fp);
fclose(ft);
remove(“foo.db”); //remove original file
rename(“temp.db”,”foo.db”); //rename temp.db to foo.db
这是我们实现删除记录的唯一方法吗?
我可以考虑将下一条记录与上一条记录重叠。
但是如何以二进制模式终止最后一条记录并标记文件结尾?
我也看到了this post,但没有任何线索
【问题讨论】:
-
@Sagar:在哪个操作系统上?这些记录和文件包含什么?请编辑您的问题以改进它!
-
@BasileStarynkevitch 我认为代码依赖于 c 编译器,可以移植到任何操作系统上。我想我们可以通过某种方式以二进制模式标记文件的结尾。虽然我同意你的回答。甚至我也这么认为。但thanx以获得更多澄清。
标签: c file-handling