📜  最佳方法 c 菜单终端 - C 编程语言代码示例

📅  最后修改于: 2022-03-11 15:04:33.690000             🧑  作者: Mango

代码示例1
#include

typedef void (*Menu_Processing_Function_Pointer)(void);

struct Menu_Option
{
    char choice;
    char const *p_selection_text;
    Menu_Processing_Function_Pointer p_processing_function;
};

void Process_Selection_One(){
    printf("Test one\n");
};
void Process_Selection_Two(){
    printf("Test two\n");
};

struct Menu_Option main_menu[] =
    {
        {'1', "Option 1", Process_Selection_One},
        {'2', "Option 2", Process_Selection_Two},
};
static const size_t quantity_selections =
    sizeof(main_menu) / sizeof(main_menu[0]);

int main(){
    printf(
        "\n"
        "------------------------------\n"
        "         Main Menu\n"
        "------------------------------\n"
    );
    for (size_t i = 0; i < quantity_selections; i++) {
        printf("%li:\t%s\n", i+1, main_menu[i].p_selection_text);
    }
    printf("Enter selection, 0 to quit: ");
    char choice;
    scanf("%c", &choice); 
    for (size_t i = 0; i < quantity_selections; ++i) {
        if (choice == main_menu[i].choice) {
            Menu_Processing_Function_Pointer p_function = main_menu[i].p_processing_function;
            (p_function)();
            break;
        }
    }
    return 0;
}