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

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

Жанры

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

}

 }

}

16. Следующая функция — утилита для удаления всех дорожек элемента каталога:

static void del_track_entries(const cdc_entry *entry_to_delete) {

 int track_no = 1;

 int delete_ok;

 display_cdc(entry_to_delete);

 if (get_confirm("Delete tracks for this entry? ")) {

do {

delete_ok = del_cdt_entry(entry_to_delete->catalog, track_no);

track_no++;

} while(delete_ok);

 }

}

17. Создайте очень простое средство поиска, в котором разрешите пользователю ввести строку и затем поищите элементы каталога, содержащие строку. Поскольку может быть несколько элементов с такой строкой, просто по очереди предлагаются пользователю все найденные:

static cdc_entry find_cat(void) {

 cdc_entry item_found;

 char tmp_str[TMP_STRING_LEN + 1];

 int first_call = 1;

 int any_entry_found = 0;

 int string ok;

 int entry_selected = 0;

 do {

string_ok = 1;

printf("Enter string to search for in catalog entry: ");

fgets(tmp_str, TMP_STRING_LEN, stdin);

strip_return(tmp_str);

if (strlen(tmp_str) > CAT_CAT_LEN) {

fprintf(stderr, "Sorry, string too long, maximum %d \

characters\n", CAT_CAT_LEN);

string_ok = 0;

}

 } while (!string_ok);

 while (!entry_selected) {

item_found = search_cdc_entry(tmp_str, &firstcall);

if (item_found.catalog[0] != '\0') {

any_entry_found = 1;

printf("\n");

display_cdc(&item_found);

if (get_confirm("This entry? ")) {

entry_selected = 1;

}

} else {

if (any_entry_found) printf("Sorry, no more matches found\n");

else printf("Sorry, nothing found\n");

break;

}

 }

 return(item_found);

}

18. Функция

list_tracks
утилита, которая выводит все дорожки для заданного элемента каталога:

static void list_tracks(const cdc_entry *entry_to_use) {

 int track_no = 1;

 cdt_entry entry_found;

 display_cdc(entry_to_use);

 printf("\nTracks\n");

 do {

entry_found = get_cdt_entry(entry_to_use->catalog, track_no);

if (entry_found.catalog[0]) {

display_cdt(&entry_found);

track_no++;

}

 } while(entry_found.catalog[0]);

 (void)get_confirm("Press return");

} /* list_tracks */

19. Функция

count_all_entries
подсчитывает все дорожки:

static void count_all_entries(void) {

 int cd_entries_found = 0;

 int track_entries_found = 0;

 cdc_entry cdc_found;

 cdt_entry cdt_found;

 int track_no = 1;

 int first_time = 1;

 char *search_string = "";

 do {

cdc_found = search_cdc_entry(search_string, &first_time);

if (cdc_found.catalog[0]) {

cd_entries_found++;

track_no = 1;

do {

cdt_found = get_cdt_entry(cdc_found.catalog, track_no);

if (cdt_found.catalog[0]) {

track_entries_found++;

track_no++;

}

} while (cdt_found.catalog[0]);

}

 } while (cdc_found.catalog[0]);

 printf("Found %d CDs, with a total of %d tracks\n",

cd_entries_found, track_entries_found);

 (void)get_confirm("Press return");

}

20. Теперь у вас есть утилита

display_cdc
для вывода элемента каталога:

static void display_cdc(const cdc_entry *cdc_to_show) {

 printf("Catalog: %s\n", cdc_to_show->catalog);

 printf("\ttitle: %s\n", cdc_to_show->title);

 printf("\ttype: %s\n", cdc_to_show->type);

 printf("\tartist: %s\n", cdc_to_show->artist);

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

Кровь Севера

Мазин Александр Владимирович
3. Викинг
Фантастика:
альтернативная история
9.14
рейтинг книги
Кровь Севера

Корона мечей

Джордан Роберт
7. Колесо Времени
Фантастика:
фэнтези
8.62
рейтинг книги
Корона мечей

Будущее разума

Каку Митио
Научно-образовательная:
прочая научная литература
физика
8.00
рейтинг книги
Будущее разума

Бремя власти

Балашов Дмитрий Михайлович
3. Государи московские
Научно-образовательная:
история
7.25
рейтинг книги
Бремя власти

Дьявольская секта (Сборник)

Саган Франсуаза
Бестселлер
Детективы:
криминальные детективы
боевики
5.00
рейтинг книги
Дьявольская секта (Сборник)

Директива Джэнсона

Ладлэм Роберт
Детективы:
шпионские детективы
7.00
рейтинг книги
Директива Джэнсона

Ключник

Зайцев Сергей Григорьевич
2. Викс
Фантастика:
фэнтези
рпг
попаданцы
9.25
рейтинг книги
Ключник

Архимаг. Пробуждение. Трилогия

Рудазов Александр
56. В одном томе
Фантастика:
научная фантастика
9.32
рейтинг книги
Архимаг. Пробуждение. Трилогия

Самодержец пустыни

Юзефович Леонид Абрамович
Проза:
историческая проза
6.25
рейтинг книги
Самодержец пустыни

Шайтан Иван 5

Тен Эдуард
5. Шайтан Иван
Фантастика:
попаданцы
альтернативная история
историческое фэнтези
5.50
рейтинг книги
Шайтан Иван 5

Санкт-Петербург. Автобиография

Королев Кирилл Михайлович
Научно-образовательная:
история
5.00
рейтинг книги
Санкт-Петербург. Автобиография

Печать мастера

Лисина Александра
6. Гибрид
Фантастика:
попаданцы
технофэнтези
аниме
фэнтези
6.00
рейтинг книги
Печать мастера

Том 2. Рассказы и пьесы 1904-1907

Андреев Леонид Николаевич
2. Собрание сочинений в шести томах
Проза:
русская классическая проза
5.00
рейтинг книги
Том 2. Рассказы и пьесы 1904-1907

Локки 7. Потомок бога

Решетов Евгений Валерьевич
7. Локки
Фантастика:
аниме
эпическая фантастика
фэнтези
5.00
рейтинг книги
Локки 7. Потомок бога