Как сделать меню для программы? - C (СИ)
Формулировка задачи:
Надо сделать меню для программки,
1. Ввод чисел в массив random
2. Ввод своих чисел в массив
как это сделать, в паскале знаю как, а вот в Си нет.
Решение задачи: «Как сделать меню для программы?»
textual
Листинг программы
#include <stdio.h>
typedef enum {
MENU_ITEM_EXIT,
MENU_ITEM_USAGE,
MENU_ITEM_HELLO,
/* Should be the last */
MENU_ITEM_UNKNOWN,
} MENU_ITEM_E;
const char *menu_item_names[] = {
"Exit", "Usage", "Hello",
};
void usage() {
printf("menu.c, 2011\n"
"Enter the number of operation, 0 to exit\n");
}
void hello() {
printf("Hello, World\n");
}
void menu_print_items() {
MENU_ITEM_E i;
for (i = 0; i != MENU_ITEM_UNKNOWN; ++i)
printf("[%d] %s\n", i, menu_item_names[i]);
}
MENU_ITEM_E menu_exec(int item) {
switch (item) {
case MENU_ITEM_EXIT:
break;
case MENU_ITEM_USAGE:
usage();
break;
case MENU_ITEM_HELLO:
hello();
break;
default:
printf("Uknown menu item\n");
item = MENU_ITEM_UNKNOWN;
}
return item;
}
int main() {
int item = 0;
do {
menu_print_items();
printf("> ");
scanf("%d", &item);
} while (menu_exec(item) != MENU_ITEM_EXIT);
return 0;
}
Объяснение кода листинга программы
- Программа представляет собой меню на языке C.
- Тип данных переменной
item—int. - Переменная
itemиспользуется для получения выбора пользователя. - В начале программы объявлен массив
menu_item_namesс именами пунктов меню. - Функция
usageвыводит информацию о программе и её использовании. - Функция
helloвыводит приветствие на экран. - Функция
menu_print_itemsвыводит список пунктов меню. - В функции
menu_execпроисходит обработка выбранного пункта меню. - В случае выбора пункта меню
Exit,UsageилиHello, выполняется соответствующая функция. - В случае выбора пункта меню
Unknown, на экран выводится сообщение об ошибке. - В функции
mainсоздаётся переменнаяitem, которая используется для получения выбора пользователя. - В цикле до тех пор, пока пользователь не выберет пункт меню
Exit, происходит вывод списка пунктов меню и получение выбора пользователя. - После получения выбора пользователя, он передаётся в функцию
menu_execдля обработки. - После выполнения функции
menu_exec, программа возвращается в начало цикла. - В конце программы выполняется команда
return 0;, заканчивающая работу программы. - Для работы программы на ввод данных от пользователя используется функция
scanf. - В данном коде не обрабатывается случай, когда пользователь вводит некорректные данные.
- В данном коде не обрабатывается случай, когда пользователь вводит буквы вместо цифр.
- В данном коде не обрабатывается случай, когда пользователь вводит число, которое не соответствует номеру пункта меню.
- В данном коде не обрабатывается случай, когда пользователь вводит число, которое больше или меньше, чем количество пунктов меню.