Как сделать интерактивный интерфейс cmd? - PullRequest
0 голосов
/ 09 мая 2018

Мне было поручено создание интерактивного интерфейса cmd на C. Мне нужно управлять базой данных студентов и иметь 3 команды: добавить, удалить, распечатать. Я не могу правильно настроить интерактивную платформу, мне нужно добиться следующего: каждый раз, когда я ввожу команду, она выполняется, а затем ждет новой команды без выхода, поэтому связанный список не будет удален из памяти, пока я застрял здесь :

int main(int argc,char *argv[])
{
    char input[MAX];
    int c;
    if(argc == 1)
    {
        printf("no values were entered");
        exit(0);
    }

    while(--argc>0 )
    {
        ++argv;
        {
            strcpy(input,*argv);
            if((*++argv) )
            {
                printf("\nmain(): too much args\nexit(0)\n");
                exit(0);
            }
        }
    }

    {
        if (strcmp(input,"add") == 0)
            /*do something*/;
        else if(strcmp(input,"print") == 0)
            /*do something*/
        else if(strcmp(input,"remove") == 0)
            /*do something*/
        else
            printf("no command was found\n");
    }
    return 0;
}

Теперь, это действительно дает мой ввод и делает то, что должно, но я не могу понять, как заставить его возвращаться и ждать больше команд, не выходя из программы. Спасибо за всю информацию и помощь заранее!

1 Ответ

0 голосов
/ 09 мая 2018

Если вы хотите создать интерактивный интерфейс, вам нужно выполнить несколько шагов.

1 - получить нажатие клавиши пользователем, как

keypress = getch();

2 - переключить случай, когда клавиша нажата как

switch(keypress)
{
    case 'a' :
       // Do somethink...
    case 'b' :
       // Do somethink
    default :
       break;
}

3 - Теперь поместите это в цикл while, как

do
{
    keypress = getch();
    switch(keypress)
    {
        case 'a' :
          // Do somethink...
        case 'b' :
          // Do somethink
        default :
          break;
}
while(keypress != 'q')
// quit program...

Спасибо, Robin.

...