我正在编写一个程序,我记录了对文件的所有写入,并且在进程终止之前,我写了所有写入,即从日志到实际文件。现在,在日志中每个类型的记录如下:
offset, length, data
在写入之后我需要计算偏移量,这样当我最终写入实际文件时,我可以找到该位置,以便写入下一个写入或读取。
当前偏移位置+写入的字节是否会在写入后给出文件偏移量。
谢谢
答案 0 :(得分:1)
答案 1 :(得分:0)
有几种方法可以实现这一目标:
第一种方式(在这种情况下,位置会自动更新为您已阅读的数量。)
第二种方式(最便携式)
第三种方式
第四种方式(不太便携)
func()和 func64()之间的区别在于func64()使用正确的64位偏移量,这消除了超过4Gb的文件问题,而func( )使用 int 类型,可以是32位或64位,具体取决于架构。
fseeko()和 ftello()功能与 fseek()和 ftell()完全相同除了fseeko()的 offset 参数和ftello()的返回值属于 off _t而不是 long 。
作为结论,最佳做法是使用fgetpos64()/ fsetpos64()或ftello64()/ fseeko64()。 尽量避免使用ftell()和fseek()。