2013-03-12 59 views
-2

我想在C中實現一個shell。下面是這個東西。我想做一個歷史友好的功能,如果我按它去prev。命令。從文件的最後一行讀到C中的第一個

現在我有一個存儲歷史記錄的文件,稱爲history.txt。當我執行命令時,我會將該命令附加到文本。並將某種偏移量重置到文件的最後一行。

我需要一種方法來查找最後一行,並根據命令逐一上移一行。並根據命令逐個向上移動。

現在,我有一個想法是fgets()直到-1或什麼?

我該如何開始的任何想法?

編輯:我可以想出一個使用數組的解決方案。但是有沒有一種方法可以讓我使用很少的空間?

+1

將歷史文件讀入內存,並有指向每個條目的指針數組? – 2013-03-12 04:52:09

+0

我在想,雙向鏈表會很好,但內存成本可能很高。 – Kalon 2013-03-12 04:56:35

回答

2

當您需要運行上一個命令時,請不要打擾從文件讀取歷史記錄。只需將先前的命令存儲在內存中。在退出時將它們寫入磁盤,並在啓動時加載它們。這就是真實shell的工作原理。

+0

所以像一個數組?我想你可以使用循環緩衝區,但是如果文件很大可能會導致內存溢出 – Kalon 2013-03-12 04:53:27

+1

不需要循環緩衝區,只要鏈接列表可以很好地修剪它,或者一個普通的數組,如果你總是保持所有的歷史(讓我們面對它,如果用戶通過輸入命令耗盡內存,其他的東西是錯誤的)。保存時可以修整N行,或丟棄重複等。 – 2013-03-12 04:56:10

+0

謝謝。這很有幫助,但遺憾的是,我不能接受那麼快的答案。 :[ – Kalon 2013-03-12 04:59:31

相關問題