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

на главную

Жанры

Основы программирования в 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);

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

Лев Толстой

Труайя Анри
Проза:
историческая проза
5.00
рейтинг книги
Лев Толстой

Возвращение Томаса. Башня-2 (сборник)

Никитин Юрий Александрович
Фантастика:
фэнтези
7.00
рейтинг книги
Возвращение Томаса. Башня-2 (сборник)

На горах

Мельников-Печерский Павел Иванович
Проза:
классическая проза
8.87
рейтинг книги
На горах

Чужое наследие

Кораблев Родион
3. Другая сторона
Фантастика:
боевая фантастика
8.47
рейтинг книги
Чужое наследие

Криптограммы Востока (сборник)

Рерих Елена Ивановна
Рерихи. Избранное
Религия и эзотерика:
эзотерика
религия
6.25
рейтинг книги
Криптограммы Востока (сборник)

Warhammer: Битвы в Мире Фэнтези. Омнибус. Том 2

Коллектив авторов
Warhammer Fantasy Battles
Фантастика:
фэнтези
5.00
рейтинг книги
Warhammer: Битвы в Мире Фэнтези. Омнибус. Том 2

Две могилы

Престон Дуглас
12. Пендергаст
Детективы:
триллеры
прочие детективы
8.90
рейтинг книги
Две могилы

Орленев

Мацкин Александр Петрович
Жизнь в искусстве
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Орленев

Экспансия – I

Семенов Юлиан Семенович
10. Штирлиц
Детективы:
политические детективы
6.33
рейтинг книги
Экспансия – I

Александр III и его время

Толмачев Евгений Петрович
Научно-образовательная:
история
культурология
5.00
рейтинг книги
Александр III и его время

Параллельные миры

Каку Митио
Научно-образовательная:
прочая научная литература
8.11
рейтинг книги
Параллельные миры

12 великих комедий

Шекспир Уильям
Вожди Советского Союза
Проза:
классическая проза
6.25
рейтинг книги
12 великих комедий

Земля в цвету

Сафонов Вадим Андреевич
Научно-образовательная:
история
биология
ботаника
5.00
рейтинг книги
Земля в цвету

Ледовый апокалипсис

Ладлэм Роберт
7. Прикрытие-Один
Детективы:
триллеры
5.00
рейтинг книги
Ледовый апокалипсис