best approach c menu terminal code example

Example: 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;
}

Tags:

C Example