Es ist ein Microsoft Interview Frage.Wie liest man die letzten n Zeilen aus einer Datei in C
lesen letzten n Zeilen der Datei C mit (genau)
Nun könnte es so viele Möglichkeiten, dies zu erreichen, einige von ihnen sein könnte:
-> Einfachstes von alle, im ersten Durchlauf, zählen die Anzahl der Zeilen in der Datei und im zweiten Durchlauf die letzten n Zeilen.
-> Oder Sie können eine doppelt verknüpfte Liste für jede Zeile pflegen und die letzten n Zeilen anzeigen, indem Sie die verknüpfte Liste bis zum letzten Knoten durchlaufen.
-> Implementieren Sie etwas Art tail -n fname
-> Um es zu optimieren mehr wir Doppel Zeiger mit Länge als n und jeder Zeile gespeichert dynamisch in einer Round-Robin-Mode haben können, bis wir das Ende erreichen der Datei.
zum Beispiel, wenn 10 Zeilen in der Datei sind und die letzten 3 Zeilen gelesen werden sollen. Dann könnten wir ein Puffer-Array als buf [3] [] erstellen und zur Laufzeit den Mall-Speicher weitermachen und den Puffer auf zirkuläre Weise freigeben, bis wir die letzte Zeile erreichen und einen Zähler behalten, um den aktuellen Index des Arrays zu kennen.
Kann mir bitte jemand mit einer optimierten Lösung helfen oder mich zumindest leiten, wenn einer der oben genannten Ansätze mir helfen kann, die richtige Antwort oder einen anderen gängigen Ansatz/Methode für solche Fragen zu bekommen.
letzter scheint optimiert zu sein. –
Werfen Sie einen Blick auf die Schwanz-Implementierung? http: // Stapelüberlauf.com/questions/10164597/how-wo-du-du-implementieren-tail-effizient – StarPinkER
Für zusätzliche Punkte, geben Sie einen Fehler zurück, wenn die Datei weniger als n Zeilen hat. –