我试图在文本文件中存储大量素数,如果我结束我的程序,我需要能够读取文件的行以查看我离开的地方。我不知道如何在不先读取文件的每一行的情况下读取最后一行。
问问题
242 次
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 回答