简单的问题。
我想在磁盘上创建一组记录(数据库是夸大其词)。我可以用rb +打开,用fseek移动到一个随机位置,然后fread和fwrite,全部穿插fflush。好的。
现在我要删除一条记录。 easy ---将最后一条记录移动到我要删除另一条记录的位置,然后将该文件缩短一条记录。
但是......如何缩短现有文件?
/ IAW
答案 0 :(得分:0)
答案 1 :(得分:0)
要截断已打开的现有文件,请搜索所需的文件大小,然后在该位置设置新的EOF。问题是C没有用于此目的的功能。您必须使用特定于平台的API,例如Windows上的SetEndOfFile()
。
答案 2 :(得分:0)
没有ANSI解决方案来解决这个问题,除非重新复制整个文件。
只有特定于操作系统的解决方案。看到答案下的评论。
Windows:SetEndOfFile() Posix:ftruncate()和truncate()