Реализация истории в простой программе на языке c - PullRequest
1 голос
/ 19 февраля 2011

Я новичок и учусь самостоятельно.Мне удалось написать простой код оболочки на c, но теперь моя проблема заключается в том, чтобы вводимые команды сохранялись таким образом, чтобы при вводе команды «history» недавно введенные команды отображались на экране.пример кода или любые материалы для чтения, которые помогут мне иметь историю моей оболочки, будут оценены.

1 Ответ

4 голосов
/ 19 февраля 2011

Есть много способов достичь этого.Вы можете использовать библиотеку readline *1001*, которая действительно хороша для такого рода вещей.Это дало бы гораздо больше, чем простая команда history.

Но проще было бы реализовать простую историю.Если у вас есть фиксированный лимит для команд в истории, будет достаточно простого массива, например, вот так:

static const char *history[HISTORY_MAX_SIZE];
static const unsigned history_count = 0;

void add_command_to_history( const char *command )
{
   if (history_count < HISTORY_MAX_SIZE) {
        history[history_count++] = strdup( command );
   } else {
        free( history[0] );
        for (unsigned index = 1; index < HISTORY_MAX_SIZE; index++) {
            history[index - 1] = history[index];
        }
        history[HISTORY_MAX_SIZE - 1] = strdup( command );
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...