3

我试图在文本文件中存储大量素数,如果我结束我的程序,我需要能够读取文件的行以查看我离开的地方。我不知道如何在不先读取文件的每一行的情况下读取最后一行。

4

5 回答 5

3

我也不知道。只需将最后一个值写入单独的文件,然后读取该值即可知道从哪里恢复。

于 2012-12-17T21:10:14.897 回答
2

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

但是Pete Beckers 的解决方案要好得多,我会选择它。

于 2012-12-17T21:11:46.723 回答
1

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

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

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

fseek(文件,16,SEEK_SET);

SEEK_SET 表示文件的开始。

于 2012-12-17T21:13:37.773 回答
1

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

于 2012-12-17T21:13:50.467 回答
0

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

只需将文件末尾位置的指针减去该值即可。

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

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

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

于 2012-12-17T21:14:34.993 回答