2013-03-25 174 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