Основы программирования в Linux
Основы программирования в Linux читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Имейте в виду, что в некоторых старых дистрибутивах Linux последний параметр функции
tputsint (*putfunc)(char)char_to_terminalЕсли вы обратитесь к страницам интерактивного справочного руководства за информацией о функции
tparmtgotoВы почти готовы добавить обработку экрана в вашу функцию выбора пункта меню. Единственно, что осталось, — очистить экран просто с помощью свойства
clearclearedДля того чтобы собрать всю полученную информацию вместе, напишем окончательную версию примера программы выбора пункта меню screenmenu.c, в которой вы "нарисуете" варианты пунктов меню на экране для того, чтобы пользователь выбрал нужный пункт (упражнение 5.6).
Вы можете переписать функцию
getchoicemain#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <termios.h><i>#include <term.h></i><i>#include <curses.h></i><i>static FILE* output_stream = (FILE *)0;</i>char *menu[] = { "a — add new record", "d — delete record", "q - quit", NULL,};int getchoice(char *greet, char *choices[], FILE *in, FILE *out);<i>int char_to_terminal(int_char_to_write);</i>int main() { ...}<i>int getchoice(char *greet, char* choices[], FILE[]* in, FILE* out) {</i><i> int chosen = 0;</i><i> int selected;</i><i> int screenrow, screencol = 10;</i><i> char **option;</i><i> char* cursor, *clear;</i><i> output_stream = out;</i><i> setupterm(NULL, fileno(out), (int*)0);</i><i> cursor = tigetstr("cup");</i><i> clear = tigetstr("clear");</i><i> screenrow =4;</i><i> tputs(clear, 1, (int*)char_to_terminal);</i><i> tputs(tparm(cursor, screenrow, screencol), 1, char_to_terminal);</i><i> fprintf(out, "Choice: %s", greet);</i><i> screenrow += 2;</i><i> option = choices;</i><i> while (*option) {</i><i> ftputs(tparm(cursor, screenrow, screencol), 1, char_to_terminal);</i><i> fprintf(out, "%s", *option);</i><i> screenrow++;</i><i> option++</i><i> }</i><i> fprintf(out, "n");</i><i> do {</i><i> fflush(out);</i><i> selected = fgetc(in);</i><i> option = choices;</i><i> while (*option) {</i><i> if (selected == *option[0]) {</i><i> chosen = 1;</i><i> break;</i><i> }</i><i> option++;</i><i> }</i><i> if (!chosen) {</i><i> tputs(tparm(cursor, screenrow, screencol), 1, char_to_terminal);</i><i> fprintf(out, "Incorrect choice, select againn");</i><i> }</i><i> } while (!chosen);</i><i> tputs(clear, 1, char_to_terminal);</i><i> return selected;</i><i>}</i><i>int char_to_terminal(int char_to_write) {</i><i> if (output_stream) putc(char_to_write, output_stream);</i><i> return 0;</i>
