如何从C中的文件中读取最后n行

Ans*_*hul 5 c algorithm data-structures

这是一个微软的面试问题.

使用C读取最后n行文件(精确)

那么可能有很多方法可以实现这一目标,其中很少可能是:

- >最简单的是,在第一遍中,计算文件中的行数,在第二遍中显示最后n行.

- >或者可以为每一行维护一个双向链表,并通过返回遍历链表到第n个最后一个节点显示最后n行.

- >实现sort tail -n fname

- >为了更好地优化它,我们可以使用长度为n的双指针,并且每行以循环方式动态存储,直到我们到达文件末尾.

例如,如果文件中有10行,并且想要读取最后3行.然后我们可以创建一个缓冲区数组作为buf [3] [],并在运行时继续mallocing并以循环方式释放缓冲区,直到我们到达最后一行并保持计数器以知道当前的数组索引.

任何人都可以帮助我提供更优化的解决方案或至少指导我,如果上述任何方法可以帮助我得到正确的答案或任何其他流行的方法/方法来解决这类问题.

per*_*eal 8

您可以使用队列并存储此队列中显示的最后n行.当你看到eof只是打印队列.

另一种方法是从文件末尾开始读取1024字节的块.找到n \n字符并打印出最后n一行时停止.

  • 如果每行500个字节,那么管理缓冲区连接将是一个很大的痛苦. (2认同)