Основы программирования в Linux
Основы программирования в Linux читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
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_screendraw_menugetchoicedraw_menuvoid 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, "%s", txt_ptr); if (current_row == current_highlight) attroff(A_STANDOUT); current_row++; option_ptr++; } mvprintw(start_row + current_row + 3, start_col, "Move highlight then press Return "); refresh();}3. Далее рассмотрим функцию
clear_all_screen<i>void clear all_screen() {</i> clear(); mvprintw(2, 20, "%s", "CD Database Application"); if (current_cd[0]) { mvprintw(ERROR_LINE, 0, "Current CD: %s: %sn", current_cat, current_cd); } refresh();}Управление базой данных
В этом разделе описаны функции пополнения или обновления базы данных компакт-дисков. Функции
add_recordupdate_cdremove_cdmain1. Добавьте сведения о новом компакт-диске в базу данных.
<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, "Enter new CD details"); screenrow += 2; mvprintw(screenrow, screencol, "Catalog Number: " );<i> get_string(catalog_number);</i> screenrow++; mvprintw(screenrow, screencol, " CD Title: ");<i> get_string(cd_title);</i> screenrow++; mvprintw(screenrow, screencol, " CD Type: ");<i> get_string(cd_type);</i> screenrow++; mvprintw(screenrow, screencol, " Artist: ");<i> get_string(cd_artist);</i> screenrow++; mvprintw(PROMPT_LINE-2, 5, "About to add this new entry:"); sprintf(cd_entry, "%s, %s, %s, %s", catalog_number, cd_title, cd_type, cd_artist); mvprintw(PROMPT_LINE, 5, "%s", 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
