best approach c menu terminal
#include<stdio.h>
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;
}