マイクロソフトのインタビューの質問.
Cを使用してファイルの最後のn行を読み取る(正確に)
これを達成する方法はたくさんありますが、そのうちのいくつかは次のとおりです。
-> 最も簡単なのは、最初のパスでファイル内の行数を数え、2 番目のパスで最後の n 行を表示することです。
-> または、すべての行に対して二重にリンクされたリストを維持し、最後の n 番目のノードまでリンクリストを逆方向にたどって最後の n 行を表示することもできます。
-> ある種の tail -n fname を実装します
-> さらに最適化するために、長さが n の double ポインターを使用し、すべての行をファイルの最後に到達するまでラウンド ロビン方式で動的に格納することができます。
たとえば、ファイルに 10 行あり、最後の 3 行を読みたい場合などです。次に、バッファーの配列を buf[3][] として作成し、実行時に最後の行に到達するまで循環的にバッファーの malloc と解放を続け、カウンターを保持して配列の現在のインデックスを知ることができます。
上記のアプローチのいずれかが正しい答えまたはそのような種類の質問に対する他の一般的なアプローチ/方法を得るのに役立つ場合は、誰かがより最適化されたソリューションを手伝ってくれるか、少なくとも私を案内してくれますか?