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

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

Жанры

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

#define BOXED_LINES 11

#define BOXED_ROWS 60

#define BOX_LINE_POS 8

#define BOX_ROW_POS 2

2. Функция

update_cd
позволяет пользователю заново ввести сведения о дорожках текущего компакт-диска. Удалив предыдущие записи о дорожках, она приглашает ввести новую информацию.

void update_cd {

 FILE *tracks_fp;

 char track_name[MAX_STRING];

 int len;

 int track = 1;

 int screen_line = 1;

 WINDOW *box_window_ptr;

 WINDOW *sub_window_ptr;

 clear_all_screen;

 mvprintw(PROMPT_LINE, 0, "Re-entering tracks for CD. ");

 if (!get_confirm)

return;

 move(PROMP_TLINE, 0);

 clrtoeol;

 remove_tracks;

 mvprintw(MESSAGE_LINE, 0, "Enter a blank line to finish");

 tracks_fp = fopen(tracks_file, "a");

Примечание

Листинг

будет продолжен через минуту; мы хотим сделать краткую паузу, чтобы обратить ваше внимание на ввод данных в обрамленное окно с прокруткой. Хитрость заключается в формировании вложенного окна, рисовании рамки по его краю и создании внутри этого окна нового вложенного окна с прокруткой.

 box_window_ptr = subwin(stdscr, BOXED_LINES + 2, BOXED_ROWS + 2,

BOX_LINE_POS - 1, BOX_ROW_POS - 1);

 if (!box_window_ptr) return;

 box(box_window_ptr, ACS_VLINE, ACS_HLINE);

 sub_window_ptr = subwin(stdscr, BOXED_LINES, BOXED_ROWS,

BOX_LINE_POS, BOX_ROW_POS);

 if (!sub_window_ptr) return;

 scrollok(sub_window_ptr, TRUE);

 werase(sub_window_ptr);

 touchwin(stdscr);

 do {

mvwprintw(sub_window_ptr, screen_line++, BOX_ROW_POS + 2,

"Track %d: ", track);

clrtoeol;

refresh;

wgetnstr(sub_window_ptr, track_name, MAX_STRING);

len = strlen(track_name);

if (len > 0 && track_name[len - 1] = '\n')

track_name[len - 1] = '\0';

if (*track_name)

fprintf(tracks_fp, "%s, %d, %s\n", current_cat, track, track_name);

track++;

if (screen_line > BOXED__LINES - 1) {

/*
время начать прокрутку */

scroll(sub_window_ptr);

screen_line--;

}

 } while (*track_name);

 delwin(sub_window_ptr);

 fclose(tracks_fp);

}

Удаление записей

1.

remove_cd
— последняя функция, вызываемая из функции
main
.

void remove_cd {

 FILE *titles_fp, *temp_fp;

 char entry[MAX_ENTRY];

 int cat_length;

 if (current_cd[0] == '\0') return;

 clear_all_screen;

 mvprintw(PROMPT_LINE, 0, "About to remove CD %s: %s. ", current_cat, current_cd);

 if (!get_confirm)

return;

 cat_length = strlen(current_cat);

 /* Файл заголовков копируется во временный, игнорируя данный CD */

 titles_fp = fopen(title_file, "r");

 temp_fp = fopen(temp_flie, "w");

 while(fgets(entry, MAX_ENTRY, titles_fp)) {

/* Сравнивает номер в каталоге и копирует элемент, если не

найдено совпадение */

if (strncmp(current_cat, entry, cat_length) != 0)

fputs(entry, temp_fp);

 }

 fclose(titles_fp);

 fclose(temp_fp);

 /* Удаляет файл заголовков и переименовывает временный файл */

 unlink(title_file);

 rename(temp_file, title_file);

 /* Теперь делает то же самое для файла дорожек */

 remove_tracks;

 /* Устанавливает 'None' для текущего CD */

 current_cd[0] = '\0';

}

2. Теперь вам только нужен программный код функции

remove_tracks
, удаляющей дорожки текущего компакт-диска. Она вызывается двумя функциями —
update_cd
и
remove_cd
.

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

"Фантастика 2024-107". Компиляция. Книги 1-21

Голд Джон
Фантастика 2024. Компиляция
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
рпг
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Фантастика 2024-107. Компиляция. Книги 1-21

В лапах зверя

Зайцева Мария
1. Звериные повадки Симоновых
Любовные романы:
остросюжетные любовные романы
эро литература
5.00
рейтинг книги
В лапах зверя

Путеводная звезда. Том 2

Извольский Сергей
7. Варлорд
Фантастика:
боевая фантастика
5.50
рейтинг книги
Путеводная звезда. Том 2

История Востока. Том 1

Васильев Леонид Сергеевич
1. История Востока
Научно-образовательная:
история
4.00
рейтинг книги
История Востока. Том 1

Под защитой ректора

Аллен Мира
Фантастика:
фэнтези
сказочная фантастика
5.00
рейтинг книги
Под защитой ректора

Тигр, светло горящий

Нортон Андрэ
Фантастика:
фэнтези
7.50
рейтинг книги
Тигр, светло горящий

В объятиях прошлого

Фуллер Ирина
1. Книжники
Фантастика:
детективная фантастика
5.00
рейтинг книги
В объятиях прошлого

Осажденная крепость. Нерассказанная история первой холодной войны

Млечин Леонид Михайлович
Научно-образовательная:
история
5.00
рейтинг книги
Осажденная крепость. Нерассказанная история первой холодной войны

Хоровод Невест

Ефанов Сергей Алексеевич
2. Псимаг
Фантастика:
фэнтези
героическая фантастика
7.93
рейтинг книги
Хоровод Невест

Властелин Безмолвного Королевства

Кук Глен Чарльз
Звезды новой фэнтези
Фантастика:
фэнтези
героическая фантастика
ужасы и мистика
5.00
рейтинг книги
Властелин Безмолвного Королевства

Наши в Блонвуре

Wolf Lita
2. Суженая из другого мира
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Наши в Блонвуре

Мир Приключений 1963 г. №9

Днепров Анатолий
Альманах "Мир приключений"
Фантастика:
научная фантастика
5.00
рейтинг книги
Мир Приключений 1963 г. №9

"Фантастика 2025-76". Компиляция. Книги 1-35

Стоев Андрей
Фантастика 2025. Компиляция
Фантастика:
боевая фантастика
попаданцы
фэнтези
5.00
рейтинг книги
Фантастика 2025-76. Компиляция. Книги 1-35

Третий. Том 6

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
фантастика: прочее
попаданцы
5.00
рейтинг книги
Третий. Том 6