Ввод/вывод
Ввод/вывод уже упоминался в данной главе в связи с системными вызовами и библиотечными функциями. Стандартный пакет ввода/вывода языка C состоит из целого множества библиотечных функций. Кроме того, имеется несколько системных вызовов, предназначенных для организации ввода/вывода. Далее вопросы ввода/вывода в языке C будут обсуждаться несколько более подробно. К таким вопросам можно отнести:
- Создание и удаление файлов.
- Открытие и закрытие файлов, используемых программой.
- Передачу информации из файла в программу (чтение).
- Передачу информации из программы в файл (запись).
В данном разделе будут описаны несколько функций, предназначенных для передачи информации, но в основном будут обсуждаться функции для различных манипуляций с файлами.
Для ввода и вывода данных в окна и спецокна используются подпрограммы, похожие на те, которые работают с stdscr. Единственная разница состоит в том, что необходимо указать окно, к которому относится операция. Как правило, имена этих подпрограмм получаются путем добавления буквы w в начало названия соответствующей подпрограммы для stdscr, а также имени окна в качестве первого параметра. Например, если нужно вывести символ c в окно mywin, addch ('c') превращается в waddch (mywin,'c'). Далее приводится список работающих с окнами подпрограмм, соответствующих тем, которые были описаны в разделе Несложный ввод/вывод.
waddch (win, ch)
mvwaddch (win, y, x, ch)
waddstr (win, str)
mvwaddstr (win, y, x, str)
wprintw (win, fmt[,arg...])
mvwprintw (win, y, x, fmt[,arg...])
wmove (win, y, x)
wclear (win)
werase (win)
wclrtoeol (win)
wclrtobot (win)
wrefresh (win)
Как видно из описаний, эти подпрограммы отличаются от тех, которые работают с stdscr, только своими именами и добавлением аргумента win. Заметьте, что у подпрограмм, чьи имена начинаются на mvw, аргумент win предшествует координатам y, x, хотя, судя по их именам, следовало бы ожидать обратного. См. в curses(3X) дополнительные данные об этих подпрограммах, вариантах подпрограмм getch(), getstr() и другую информацию, касающуюся работы с окнами.
Все подпрограммы с буквой w в имени могут использоваться и со спецокнами, за исключением wrefresh() и wnoutrefresh() (см. ниже). Вместо них со спецокнами нужно использовать соответственно prefresh() и pnoutrefresh().