对于给定的文件,我可以向后计算行数吗?即从 EOF 开始,计算行数直到开始?
我可以 fseek 到文件末尾。从那里开始,继续寻找新行字符(新行的指示)并继续增加我的 line_number 计数。但是我的结束条件应该是什么?
EOF 有反义词吗? :)
我自己的建议:如果我正在寻找从末尾开始的第 X 行,我总是可以从这个行号开始得到它:total_lines - X --- 够公平吗?
动机:我有兴趣从一个巨大的(读起来真的很大)文件的末尾进入第 X 行。所以,寻找最优化的解决方案。
PS:这不是作业(虽然我是终身学生 :p)
最佳答案
当我完成此操作时(例如,编写了一个粗略的标准 tail
等价物)我从末尾读取了一个 block ,计算其中的行数,如果我没有足够的行,使用 fseek
返回并读取另一个 block (但我不确定后者是否真的发生过,除非我在测试中强制它)。
关于c - 一个文件的总行数(倒数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6606388/