Проблема с TUI меню

Меню принимает более одного символа, т. е. при вводе «hrhrhrhr» вызывается функция, которая должна быть вызвана вводом «h» и т. д. По-факту же необходимо, чтобы при вводе отличном от заданного, выдавалась ошибка и снова предлагался ввод. Объяснил коряво, но не имею представления, как сформулировать корректно. Вот нехитрый код:

#include <libintl.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main()
{

    char option;

    bool isRunning = true;

    while(isRunning == true)
    {

        printf("\nCapere actio: ");

        fflush(stdin);
     
        option = getchar();

        switch(option)
        {

            case 'h':
                printf("Actionis:\n");
                help();
                break;
            case 'c':
                create();
                break;
            case 'l':
                printf("Index numerorum:\n\n");
                list();
                break;
            case 'q':
                printf("Exitus\n");
                isRunning = false;
                break;
            default:
                printf("Actio invalidum!\n");
                break;

        }
    }
    return 0;
}

Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

get_action() читает строку. Если строка из одного символа, она возвращает этот символ. Если строка пустая или слишком длинная, она возвращает -2. Если ошибка ввода из stdin, она возвращает -1:

int get_action()
{
    int option = getchar();
    if (option == EOF) 
    {
        return -1;
    }
    if (option == '\n')
    {
        return -2;
    }
    int count = 0;
    while (true)
    {
        int c = getchar();
        if (c == EOF) 
        {
            return -1;
        }
        if (c == '\n')
        {
            break;
        }
        ++count;
    }
    if (count == 0)
    {
        return option;
    }
    return -2;
}
→ Ссылка