2013-03-25 172 views
-1

我正在創建一個簡單的C shell,並且被要求實現歷史記錄功能,有誰知道我該怎麼做?它應該能夠打印歷史記錄,保存並加載它。在C shell中實現歷史記錄

+2

請參閱http://whathaveyoutried.com和FAQ http://stackoverflow.com/faq – 2013-03-25 16:19:17

+0

您的shell必須處理它讀取的每條命令。部分處理過程是將每條命令記錄到內部數據結構中。添加shell命令將該數據結構寫入磁盤並從文件加載數據結構,然後就完成了。 – chepner 2013-03-25 16:20:06

+0

建立一個隊列類型的結構並添加到每個操作的隊列的末尾? – 75inchpianist 2013-03-25 16:20:34

回答

2

您可以使用char *的數組將您的命令保存在內存中。

char *history_command[MAX_COMMAND]; 

和使用文件在磁盤保存history_command陣列。

每個history_command數組改變了比刪除文件並保存history_command在相同的文件名

隨身攜帶的大小沿着start指數(初始爲零),所以如果size < MAX_COMMAND,你寫history[size++]和時間如果size == MAX_COMMAND你寫給history[start++](其次是start %= MAX_COMMAND;)。這樣你的數組就變成圓形了(@shahbaz建議)

否則你可以使用鏈表作爲這樣的行爲。這是一個FIFO隊列。所以用鏈表處理可能是另一種解決方案

+0

_並將數組中的每個元素移動到前一個元素indice_,這是相當低效的。一個更好的方法是將'start'索引(最初爲零)和'size'一起保存,所以如果size Shahbaz 2013-03-25 16:32:52

+0

@shahbaz是個好主意。我錯過了。我會更新我的答案 – MOHAMED 2013-03-25 16:34:29

+0

@shahbaz有一些你錯過了。如果我想打印歷史記錄。我不會按照您提供的解決方案的順序獲取歷史記錄 – MOHAMED 2013-03-25 16:39:49