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

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

Уважаемые читатели!
Тут можно читать бесплатно Основы программирования в Linux - Мэтью Нейл. Жанр: Интернет. Так же Вы можете читать полную версию (весь текст) онлайн книги без регистрации и SMS на сайте Knigi-online.info (книги онлайн) или прочесть краткое содержание, описание, предисловие (аннотацию) от автора и ознакомиться с отзывами (комментариями) о произведении.
Описание онлайн-книги Основы программирования в Linux - Мэтью Нейл:
В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов
Читем онлайн Основы программирования в Linux - Мэтью Нейл

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 104 105 106 107 108 109 110 111 112 ... 324

 mvprintw(start_screenrow - 2, start_screencol, greet);

 keypad(stdscr, TRUE);

 cbreak();

 noecho();

 key = 0;

 while (key != 'q' && key != KEY_ENTER && key != 'n') {

  if (key == KEY_UP) {

   if (selected_row == 0) selected_row = max_row - 1;

   else selected_row--;

  }

  if (key == KEY_DOWN) {

   if (selected_row == (max_row - 1)) selected_row = 0;

   else selected_row++;

  }

  selected = *choices[selected_row];

<i>  draw_menu(choices, selected_row, start_screen_row, start_screencol);</i>

  key = getch();

 }

 keypad(stdscr, FALSE);

 nocbreak();

 echo();

 if (key == 'q') selected = 'q';

 return(selected);

}

2. Обратите внимание на то, как две локальные функции clear_all_screen и draw_menu вызываются внутри функции getchoice. Первой рассмотрим функцию draw_menu:

void draw_menu(char* options[], int current_highlight, int start_row, int start_col) {

 int current_row = 0;

 char **option_ptr;

 char *txt_ptr;

 option_ptr = options;

 while (*option_ptr) {

  if (current_row == current_highlight) attron(A_STANDOUT);

  txt_ptr = options[current_row];

  txt_ptr++;

  mvprintw(start_row + current_row, start_col, &quot;%s&quot;, txt_ptr);

  if (current_row == current_highlight) attroff(A_STANDOUT);

  current_row++;

  option_ptr++;

 }

 mvprintw(start_row + current_row + 3, start_col,

  &quot;Move highlight then press Return &quot;);

 refresh();

}

3. Далее рассмотрим функцию clear_all_screen, которая, как ни странно, очищает экран и перезаписывает заголовок. Если компакт-диск выбран, отображаются его данные:

<i>void clear all_screen() {</i>

 clear();

 mvprintw(2, 20, &quot;%s&quot;, &quot;CD Database Application&quot;);

 if (current_cd[0]) {

  mvprintw(ERROR_LINE, 0, &quot;Current CD: %s: %sn&quot;, current_cat, current_cd);

 }

 refresh();

}

Управление базой данных

В этом разделе описаны функции пополнения или обновления базы данных компакт-дисков. Функции add_record, update_cd и remove_cd вызываются из функции main.

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

1. Добавьте сведения о новом компакт-диске в базу данных.

<i>void add_record {</i>

 char catalog_number[MAX_STRING];

 char cd_title[MAX_STRING];

 char cd_type[MAX_STRING];

 char cd_artist[MAX_STRING];

 char cd_entry[MAX_STRING];

 int screenrow = MESSAGE_LINE;

 int screencol = 10;

<i> clear_all_screen();</i>

 mvprintw(screenrow, screencol, &quot;Enter new CD details&quot;);

 screenrow += 2;

 mvprintw(screenrow, screencol, &quot;Catalog Number: &quot; );

<i> get_string(catalog_number);</i>

 screenrow++;

 mvprintw(screenrow, screencol, &quot; CD Title: &quot;);

<i> get_string(cd_title);</i>

 screenrow++;

 mvprintw(screenrow, screencol, &quot; CD Type: &quot;);

<i> get_string(cd_type);</i>

 screenrow++;

 mvprintw(screenrow, screencol, &quot; Artist: &quot;);

<i> get_string(cd_artist);</i>

 screenrow++;

 mvprintw(PROMPT_LINE-2, 5, &quot;About to add this new entry:&quot;);

 sprintf(cd_entry, &quot;%s, %s, %s, %s&quot;,

  catalog_number, cd_title, cd_type, cd_artist);

 mvprintw(PROMPT_LINE, 5, &quot;%s&quot;, cd_entry);

 refresh();

 move(PROMPT_LINE, 0);

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

<i>  insert_title(cd_entry);</i>

  strcpy(current_cd, cd_title);

  strcpy(current_cat, catalog_number);

 }

}

2. Функция get_string приглашает к вводу и считывает строку из текущей позиции экрана. Она также удаляет завершающую новую пустую строку:

1 ... 104 105 106 107 108 109 110 111 112 ... 324
На этой странице вы можете бесплатно читать книгу Основы программирования в Linux - Мэтью Нейл бесплатно.

Оставить комментарий

Рейтинговые книги