在c ++中读取文件最后一行的最有效方法是什么?

时间:2012-12-17 21:08:04

标签: c++ text-files

我试图在文本文件中存储大量素数,如果我结束我的程序,我需要能够读取文件的行以查看我中断的位置。我不知道如何阅读最后一行,而不是首先阅读文件的每一行。

5 个答案:

答案 0 :(得分:3)

我也不知道。只需将最后一个值写入单独的文件,然后读取该值以了解恢复的位置。

答案 1 :(得分:2)

您可以使用setg()跳转到文件末尾并猜测一条线的距离。如果你的点和文件末尾之间有换行符,那么你就是在倒数第二行,知道最后一行是什么。

但Pete Beckers的解决方案要好得多,我会改用它。

答案 2 :(得分:1)

您可以计算数字的字节数。

例如,您有5个号码,并且您想要读取最后一个号码。

1个整数是4个字节。所以你可以使用fseek在文件中移动4 * 4 = 16 Byte。之后你可以阅读最后一行。

fseek(文件,16,SEEK_SET);

SEEK_SET表示文件开头。

答案 3 :(得分:1)

寻找文件的最后,然后向后阅读,直到找到换行符,这意味着你找到了最后一行的开头

答案 4 :(得分:0)

如果您知道线的最大长度,这将很容易。

只需将指针作为文件末尾的位置减去此值。

从那里开始读取行并将它们放入缓冲区。当前一个字符是新行时清除缓冲区

当你用完文件时,缓冲区将包含它。

如果您不知道最大长度,则可以始终向后读取文件。