Чтение онлайн

на главную - закладки

Жанры

Основы программирования в Linux
Шрифт:

 char tmp_str[TMP_STRING_LEN + 1];

 menu_options option_chosen = mo_invalid;

 while (option_chosen == mo_invalid) {

if (cdc_selected->catalog[0]) {

printf("\n\nCurrent entry: ");

printf("%s, %s, %a, %s\n",

cdc_selected->catalog, cdc_selected->title,

cdc_selected->type, cdc_selected->artist);

printf("\n");

printf("1 - add new CD\n");

printf("2 — search for a CD\n");

printf("3 — count the CDs and tracks in the database\n");

printf("4 — re-enter tracks for current CD\n");

printf("5 - delete this CD, and all its tracks\n");

printf("6 - list tracks for this CD\n");

printf("q — quit\n");

printf("\nOption: ");

fgets(tmp_str, TMP_STRING_LEN, stdin);

switch(tmp_str[0]) {

case '1':

option_chosen = mo_add_cat;

break;

case '2':

option_chosen = mo_find_cat;

break;

case '3':

option_chosen = mo_count_entries;

break;

case '4':

option_chosen = mo_add_tracks;

break;

case '5':

option_chosen = mo_del_cat;

break;

case '6':

option_chosen = mo_list_cat_tracks;

break;

case 'q':

option_chosen = mo_exit;

break;

}

} else {

printf("\n\n");

printf("1 - add new CD\n");

printf("2 - search for a CD\n");

printf("3 — count the CDs and tracks in the database\n");

printf("q — quit\n");

printf("\nOption: ");

fgets(tmp_str, TMP_STRING_LEN, stdin);

switch(tmp_str[0]) {

case '1':

option_chosen = mo_add_cat;

break;

case '2':

option_chosen = mo_find_cat;

break;

case '3':

option_chosen = mo_count_entries;

break;

case 'q':

option_chosen = mo_exit;

break;

}

}

 } /* while */

 return(option_chosen);

}

Примечание

Учтите, что для выбора пунктов меню теперь используются номера, а не начальные буквы, применявшиеся в двух предыдущих примерах.

8. В программе есть несколько участков, в которых хотелось бы спросить пользователя о том, уверен ли он в своем запросе. Вместо того чтобы вставлять в эти места программный код, задающий вопрос, поместим его в отдельную функцию

get_confirm
:

static int get_confirm(const char *question) {

 char tmp_str[TMP_STRING_LEN + 1];

 printf("%s", question);

 fgets(tmp_str, TMP_STRING_LEN, stdin);

 if (tmp_str[0] == 'Y' || tmp_str[0] = 'y') {

return(1);

 }

 return(0);

}

9. Функция

enter_new_cat_entry
позволяет вводить новый элемент каталога. Вам не нужно сохранять перевод строки, который возвращает функция
fgets
, поэтому отбросьте его:

static int enter_new_cat_entry(cdc_entry *entry_to_update) {

 cdc_entry new_entry;

 char tmp_str[TMP_STRING_LEN + 1];

 memset(&new_entry, '\0', sizeof(new_entry));

 printf("Enter catalog entry: ");

 (void)fgets(tmp_str, TMP_STRING_LEN, stdin);

 strip_return(tmp_str);

 strncpy(new_entry.catalog, tmp_str, CAT_CAT_LEN - 1);

 printf("Enter title: ");

 (void)fgets(tmp_str, TMP_STRING_LEN, stdin);

 strip_return(tmp_str);

 strncpy(new_entry.title, tmp_str, CAT_TITLE_LEN - 1);

 printf("Enter type: ");

 (void)fgets(tmp_str, TMP_STRING_LEN, stdin);

 strip_return(tmp_str);

 strncpy(new_entry.type, tmp_str, CAT_TYPE_LEN - 1);

 printf("Enter artist: ");

Поделиться:
Популярные книги

Пушкарь. Пенталогия

Корчевский Юрий Григорьевич
Фантастика:
альтернативная история
8.11
рейтинг книги
Пушкарь. Пенталогия

Виконт, который любил меня

Куин Джулия
2. Бриджертоны
Любовные романы:
исторические любовные романы
9.13
рейтинг книги
Виконт, который любил меня

На границе империй. Том 9. Часть 2

INDIGO
15. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 2

Альфа-ноль. Компиляция. Книги 1-12

Каменистый Артем
Альфа-ноль
Фантастика:
рпг
попаданцы
фэнтези
5.00
рейтинг книги
Альфа-ноль. Компиляция. Книги 1-12

Мужчина моей судьбы

Ардова Алиса
2. Мужчина не моей мечты
Любовные романы:
любовно-фантастические романы
8.03
рейтинг книги
Мужчина моей судьбы

(Бес) Предел

Юнина Наталья
Любовные романы:
современные любовные романы
6.75
рейтинг книги
(Бес) Предел

Проводник

Кораблев Родион
2. Другая сторона
Фантастика:
боевая фантастика
рпг
7.41
рейтинг книги
Проводник

Я спас СССР! том 1

Вязовский Алексей
1. Я спас СССР
Фантастика:
альтернативная история
6.57
рейтинг книги
Я спас СССР! том 1

Черный маг императора

Герда Александр
1. Черный маг императора
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Черный маг императора

Последний Паладин

Саваровский Роман
1. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин

Эпоха Опустошителя. Том II

Павлов Вел
2. Вечное Ристалище
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эпоха Опустошителя. Том II

Кодекс Охотника. Книга III

Винокуров Юрий
3. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
7.00
рейтинг книги
Кодекс Охотника. Книга III

Точка Бифуркации

Смит Дейлор
1. ТБ
Фантастика:
боевая фантастика
7.33
рейтинг книги
Точка Бифуркации

Древесный маг Орловского княжества 3

Павлов Игорь Васильевич
3. Орловское княжество
Фантастика:
аниме
сказочная фантастика
фэнтези
попаданцы
гаремник
5.00
рейтинг книги
Древесный маг Орловского княжества 3