c - 一个文件的总行数(倒数)

标签 c file eof

对于给定的文件,我可以向后计算行数吗?即从 EOF 开始,计算行数直到开始?

我可以 fseek 到文件末尾。从那里开始,继续寻找新行字符(新行的指示)并继续增加我的 line_number 计数。但是我的结束条件应该是什么?

EOF 有反义词吗? :)

我自己的建议:如果我正在寻找从末尾开始的第 X 行,我总是可以从这个行号开始得到它:total_lines - X --- 够公平吗?

动机:我有兴趣从一个巨大的(读起来真的很大)文件的末尾进入第 X 行。所以,寻找最优化的解决方案。

PS:这不是作业(虽然我是终身学生 :p)

最佳答案

当我完成此操作时(例如,编写了一个粗略的标准 tail 等价物)我从末尾读取了一个 block ,计算其中的行数,如果我没有足够的行,使用 fseek 返回并读取另一个 block (但我不确定后者是否真的发生过,除非我在测试中强制它)。

关于c - 一个文件的总行数(倒数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6606388/

相关文章:

c++ - Ifstream - 重置 EOF 位

python - 在 Python 中使用多处理创建超时函数

c++ - Ofstream 不写入文件 C++

java - 在 Grails 中放置文本文件的位置,以及如何获取路径

c - child 和 parent 之间使用信号的双向交流

objective-c - 如何正确定义常量

file - 确定路径是否在 Go 中的另一个路径内

c++ - 避免 eof C++ 的 "magic number"

C 在我编写的程序中正确使用 malloc 和 free

c - 可执行文件之间有什么区别?