即时通讯尝试在文本文件中存储素数的大量列表,如果我结束了我的程序,我需要能够读取文件的行以查看我离开的位置。我不知道如何阅读最后一行,无需先阅读文件的每一行。在C++中读取文件最后一行的最有效方法是什么?
回答
我也不知道。只需将最后一个值写入单独的文件中,然后读取该值以知道要恢复的位置。
不能这样做,因为它不会被保留,如果我再次运行文件 – user1767077
@ user1767077 - 哎呀,错字;将最后一个值写入单独的**文件**。 –
@ user1767077在另一个文件中,例如'last_prime.txt' –
您可以使用setg()跳转到文件的末尾,并猜测一条线的距离。如果在你的观点和文件结尾之间有一个换行符,那么你在倒数第二行,并知道最后一行是什么。
但皮特贝克斯解决方案是一个更好的,我会用它来代替。
您可以计算您的号码的字节数。
例如,您有5个数字,并且您想要读取最后一个数字。
1整数是4字节。所以你可以使用fseek在文件中移动4 * 4 = 16 Byte。之后,你可以阅读最后一行。 (文件,16,SEEK_SET);
SEEK_SET表示开始文件。
该文件不是二进制的(否则为什么用换行符分隔整数)因此一个整数不是严格的4个字节,例如1是1个字节,100是3个字节。 – jfs
您也可以在fclose(file)之前使用whereAmI = ftell(file),然后再次打开文件fopen(file)和fseek(file,whereAmI,SEEK_SET) –
寻求到文件的末尾,而只是读向后直到你找到换行符,这意味着你已经找到了最后一行
的开始。如果你知道线的最大长度,这将是简单。
只需将指针指向文件末尾的位置减去此值即可。
从那里开始读取行并将它们放入缓冲区。当前一个字符是新行时清除缓冲区
当您用完文件时,缓冲区将包含它。
如果您不知道最大长度,则可以始终向后读取文件。
- 1. 什么是从C++文件末尾读取最有效的方法? (解析文件中的最后128位)
- 2. 向后读取大文本文件的最有效方法是什么?
- 3. 什么是读取文件的第一行和最后一行的最有效的PHP方式?
- 4. 读取文件中最后一行的最快方法
- 5. 什么是使用java读取文件的最有效方式?
- 6. C# - 定期读取文件最后部分的最有效方法
- 7. 用C#读取文件最后一行的高性能方法
- 8. 在PHP中读取大文件的最佳方法是什么?
- 9. 在Delphi中读取大文件的最快方法是什么?
- 10. 在PHP中读取文件的最快方法是什么?
- 11. 在Ruby中读取大文件的最快方法是什么?
- 12. 什么是逐行读取文件的最快方法?
- 13. 解析这一行文本的最有效方法是什么?
- 14. [R readlines方法读取文件的只有最后一行
- 15. 这是读取Java文本文件最后一行的最佳方法吗?
- 16. 什么是在java中读取日志文件的最有效方式?
- 17. 以块为单位读取超大文件的最有效方法是什么?
- 18. 如何高效地读取C++文件的最后一行
- 19. 在Java中读取文件的最有效方法?
- 20. 从文件中替换最后一行的有效方法?
- 21. 从文件中读取最后一行
- 22. 什么是从C#文本文件中读取大量整数(双精度)的最有效方法?
- 23. c +最快的方式来只读取最后一行文本文件?
- 24. 什么是从gfortran读取.dbf文件的最简单方法
- 25. 什么是读取/解析XML文件的最佳方法
- 26. 读取文件的最后一行
- 27. 什么是从TCPServer读取最有效的方式?
- 28. 将数据写入文件的最有效方法是什么?
- 29. 在VBA(excel)中循环行的最有效/最快的方法是什么?
- 30. 从文件中读取字符的最有效方法?
文本文件不是有效的格式来存储顺序素数,例如,它甚至可能会更快[生成所有32位素数](http://cr.yp.to/primegen.html),而不是从一个文本文件。 – jfs
我会明确地以二进制格式存储数字,比如'__int64',而不是文本。寻找文件中的最后一个二进制数将是跳转到文件偏移量'((filesize/sizeof(__ int64)) - 1)* sizeof(__ int64)'的简单事情。 –