Kniga-Online.club
» » » » Основы программирования в Linux - Мэтью Нейл

Основы программирования в Linux - Мэтью Нейл

Читать бесплатно Основы программирования в Linux - Мэтью Нейл. Жанр: Интернет год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

<i>void get_string(char* string) {</i>

 int len;

 wgetnstr(stdscr, string, MAX_STRING);

 len = strlen(string);

 if (len &gt; 0 &amp;&amp; string[len - 1] == 'n') string[len - 1] = '';

}

3. Функция get_confirm запрашивает и считывает пользовательское подтверждение. Она читает введенную пользователем строку и проверяет, первый символ — Y или у. Если она обнаруживает другой символ, то не дает подтверждения.

<i>int get_confirm() {</i>

 int confirmed = 0;

 char first_char;

 mvprintw(Q_LINE, 5, &quot;Are you sure? &quot;);

 clrtoeol();

 refresh();

 cbreak();

 first_char = getch();

 if (first_char == 'Y' || first_char == 'y') {

  confirmed = 1;

 }

 nocbreak();

 if (!confirmed) {

  mvprintw(Q_LINE, 1, &quot; Cancelled&quot;);

  clrtoeol();

  refresh();

  sleep(1);

 }

 return confirmed;

}

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

<i>void insert_title(char* cdtitle) {</i>

 FILE *fp = fopen(title_file, &quot;a&quot;);

 if (!fp) {

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

 } else {

  fprintf(fp, &quot;%sn&quot;, cdtitle);

  fclose(fp);

 }

}

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

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

<i>#define BOXED_LINES  11</i>

<i>#define BOXED_ROWS   60</i>

<i>#define BOX_LINE_POS 8</i>

<i>#define BOX_ROW_POS  2</i>

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

<i>void update_cd() {</i>

 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;

<i> clear_all_screen();</i>

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

<i> if (!get_confirm())</i>

return;

 move(PROMP_TLINE, 0);

 clrtoeol();

<i> remove_tracks();</i>

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

 tracks_fp = fopen(tracks_file, &quot;a&quot;);

Примечание

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

 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,

   &quot;Track %d: &quot;, track);

  clrtoeol();

  refresh();

  wgetnstr(sub_window_ptr, track_name, MAX_STRING);

  len = strlen(track_name);

  if (len &gt; 0 &amp;&amp; track_name[len - 1] = 'n')

   track_name[len - 1] = '';

  if (*track_name)

   fprintf(tracks_fp, &quot;%s, %d, %sn&quot;, current_cat, track, track_name);

  track++;

  if (screen_line &gt; BOXED__LINES - 1) {

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

   scroll(sub_window_ptr);

   screen_line--;

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

Мэтью Нейл читать все книги автора по порядку

Мэтью Нейл - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


Основы программирования в Linux отзывы

Отзывы читателей о книге Основы программирования в Linux, автор: Мэтью Нейл. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*