Akurat miałem chęć na kodzenie, więc napisałem takie proste menu. Funkcja przyjmuje tablicę C-stringów zakończoną NULL i zwraca indeks wybranej opcji. Starałem się pisać uniwersalnie, więc powinno zadziałać w większości przypadków.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int menu(char *tab[])
{
int selected = 0, enter = 0, length = 0, key = 0;
//Liczenie długości tablicy
for(; tab[length] != NULL; length++);
while(!enter)
{
system("cls");
for(int i = 0; i < length; i++)
{
if(i == selected)
{
printf(">>%s<<\n", tab[i]);
}
else
{
printf(" %s\n", tab[i]);
}
}
key = getch();
//Obsługa entera
if(key == 13)
{
enter = 1;
}
//Sprawdzanie, czy klawisz należy do
//klawiszy specjalnych (np. strzałki) i
//czy jest jeszcze kod klawisza w buforze
if(key == 224 && kbhit())
{
key = getch();
//strzałka w górę
if(key == 72)
{
selected--;
if(selected < 0)
selected = length - 1;
}
//strzałka w dół
if(key == 80)
{
selected++;
if(selected >= length)
selected = 0;
}
}
}
return selected;
}
int main()
{
char *tab[] =
{
"Pierwszy element",
"Drugi element",
"Enty element",
"Trolololo",
"alamakota",
"hahaha",
"lol",
"ToJuzKoniec",
NULL
};
printf("Wybrales opcje numer: %i!!!", menu(tab));
return 0;
}