Читаем Основы программирования в Linux полностью

4. Последней рассмотрим функцию insert_title. Она вставляет в базу данных компакт-дисков заголовок, добавляя строку с заголовком в конец файла заголовков:

void insert_title(char* cdtitle) {

 FILE *fp = fopen(title_file, "a");

 if (!fp) {

  mvprintw(ERROR_LINE, 0, "cannot open CD titles database");

 } else {

  fprintf(fp, "%s\n", cdtitle);

  fclose(fp);

 }

}

Обновление записей

1. Продолжим рассмотрение других управляющих функций, вызываемых из функции main. Следующая из них — функция update_cd. Эта функция использует обведенное рамкой вложенное окно с прокруткой и нуждается в нескольких константах, которые объявляются как глобальные, поскольку они позже потребуются функции list_tracks.

#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);

Перейти на страницу:

Похожие книги

Полное руководство по Microsoft Windows XP
Полное руководство по Microsoft Windows XP

В книге известного американского автора описывается среда ОС Windows XP и принципы ее функционирования, приведен сравнительный анализ Windows XP с предшествующими версиями операционной системы Windows. Рассматриваются вопросы применения и модификации нового интерфейса с целью получения прямого доступа ко всем функциям Windows XP обсуждаются варианты подключения к компьютерным сетям. Несколько разделов посвящены работе с реестром и конфигурационными файлами, мультимедийным функциям и разнообразным системным службам, а также методам решения проблем с программным обеспечением и оборудованием. Особое внимание уделено обеспечению безопасности операционной системы.Издание адресовано пользователям и сетевым администраторам, желающим активно применять возможности операционной системы Windows XP (в том числе и недокументированные).

Джон Поль Мюллер , Питер Нортон

ОС и Сети / Книги по IT
Сетевые средства Linux
Сетевые средства Linux

В этой книге описаны принципы действия и область применения многих серверов, выполняющихся в системе Linux. Здесь рассматриваются DHCP-сервер, серверы Samba и NFS, серверы печати, NTP-сервер, средства удаленной регистрации и система X Window. He забыты и средства, традиционно используемые для обеспечения работы Internet-служб: серверы DNS, SMTP, HTTP и FTP. Большое внимание уделено вопросам безопасности сети. В данной книге нашли отражения также средства удаленного администрирования — инструменты Linuxconf, Webmin и SWAT.Данная книга несомненно окажется полезной как начинающим, так и опытным системным администраторам.Отзывы о книге Сетевые средства LinuxПоявилась прекрасная книга по Linux, осталось воспользоваться ею. Не упустите свой шанс.Александр Стенцин, Help Net Security, www.net-security.orgЕсли вы стремитесь в полной мере использовать сетевые возможности Linux — эта книга для вас. Я настоятельно рекомендую прочитать ее.Майкл Дж. Джордан, Linux OnlineВыхода подобной книги давно ожидали читатели. Менее чем на 700 страницах автор смог изложить суть самых различных вопросов, связанных с работой Linux. Автор является высококвалифицированным специалистом в своей области и щедро делится своими знаниями с читателями.Роджер Бертон, West, DiverseBooks.com

Родерик В. Смит

ОС и Сети, интернет / ОС и Сети / Книги по IT