Функция puts() Функция puts() записывает символьную строку в стандартный поток данных (т.е. выводит ее на экран). Функция puts() возвращает код символа «\п». int puts(const char *string); После выполнения функции puts() курсор переводится на новую строку. Функция putchar() Функция putchar() записывает символ в стандартный поток данных (т.е. выводит его на экран). Функция putchar() возвращает выведенный на экран символ. int putchar(int ch); Функция gets() Функция gets() считывает символьную строку стандартного входного потока и помещает ее по адресу, заданному указателем buffer; прием строки заканчивается, если функция обнаруживает символ конца строки «\п», данный символ удаляется и заменяется нуль-терминатором «\0». char *gets (char*buffer); Функция gets() возвращает указатель на считанную строку. Функция getchar() Функция getchar() считывает символ из стандартного входного потока. int getchar(void); Функция getchar() возвращает считанный символ. === Функции консольного ввода char *cgets(char *str) - помещает в буфер, на начало которого указывает str, строку символов со стандартного ввода. Запись символов начинается с str[l]; str[0] должен содержать максимальное число символов, которое должно быть прочитано и записано в строку. Функция возвращает указатель на начало буфера str. int getch(void) - выполняет ввод символа с клавиатуры. Turbo С не выполняет «эхо» ввода. В этой связи полезна для организации интерфейса с пользователем, при котором нажатие той или иной клавиши вызывает немедленную реакцию программы без отображения введённого символа на экране. int getche(void) - выполняет небуферизуемый ввод символа с клавиатуры. Turbo С «эхоирует» ввод на экране. Перевод строки происходит при достижении правой вертикальной границы текущего активного окна. int kbhit(void) - проверяет, пуст ли буфер клавиатуры. Если в буфере есть символы, функция возвращает ненулевое значение, в противном случае она возвращает О. Является удобным средством предотвращения «зацикливания» или «по- висания» при ожидании невозможного в данный момент события. Кроме того, осуществляется проверка нажатия комбинации клавиш «Ctrl-Break», что позволяет выполнить аварийное завершение программы. int ungetch(int ch) - записывает непосредственно в буфер клавиатуры символ ch. Он будет доступен при выполнении следующей операции чтения с консоли (функциями файла «conio.h»). Разрешает помещать только один символ, который не должен совпадать с константой EOF, описанной в файле «stdio.h». В случае успеха функция возвращает ch; в противном случае возвращается -1. === Функции консольного вывода void textmode(int newmode) - изменяет текущий текстовый режим. Новый режим указывается единственным параметром newmode и может задаваться либо числом, либо с использованием символических констант, значения которых определяет перечислимый тип text_modes Функции консольного вывода используют понятие активного окна экрана. Активное окно - это прямоугольная область экрана, в границах которой в данный момент работают функции. Описание активного окна (или, как часто говорят, фрейм) хранится во внутренней структурной переменной Turbo С. Установку параметров активного текстового окна выполняет функция window (). void window(int l_t_col, int l_t_row, int r_b_col, int r_b_row) - описывает активное текстовое окно: первая пара аргументов задает столбец и строку левого верхнего угла, вторая пара - правого нижнего угла. Строки и столбцы нумеруются, начиная от 1. Поэтому, например, координаты левого верх- него и правого нижнего углов экрана в режимах «25 строк х 80 столбцов» задаются парами (1,1) и (80,25). Ось X направлена слева направо, а ось Y направлена сверху вниз. Следует обратить внимание на то, как в Turbo С задаются координаты углов, сначала столбец, затем строка. Фрейм окна Turbo С имеет следующую структуру: struct text_info { unsigned char winleft; /* столбец, строка */ unsigned char wintop; /* левого верхнего угла */ unsigned char winright; /* столбец, строка */ unsigned char winbottom;/* правого верхнего угла */ unsigned char attribute; /* атрибуты */ unsigned char normattr; /* окна */ unsigned char screenheight; /* полная высота экрана */ unsigned char screenwidth; /* полная ширина экрана */ unsigned char curx; /* строка, столбец */ unsigned char сuгу /* текущей позиции курсора */ } void gettextinfo(struct text_info *r) - заполняет поля структурной переменной по шаблону text_info, на которую ссылается. Шаблон структуры text_info, описывающей текущее окно экрана, содержится в заголовочном файле «conio.h». Функция window() инициализирует поля координат фрейма окна. Функции textcolor(), textbackground(), textattr() и другие управляют цветом отображаемых символов окна. void textattr(int newattr) - устанавливает атрибут для функций, работающих с текстовыми окнами. Атрибут хранится в поле attribute структурной переменной по шаблону text_info, доступной через функцию gettextinfo() void textcolor(int newcolor) - задает цвет символов, не затрагивая установленный цвет фона. Цвет может быть или числом, или формироваться из символических констант, значения которых определяет перечисляемый тип COLORS. void textbackground(int newcolor) - задает цвет фона символов, не затрагивая установленный цвет символа. Цвет может быть или числом, или формироваться из символических констант void gotoxy(int х, int у) - устанавливает курсор в строку у и столбец х в текущем активном окне экрана. Верхний левый угол окна имеет координаты (1,1). При попытке позиционировать курсор за границы окна он останавливается на границе окна. Особенностью функции является то, что координаты х и у являются относительными, приведенными к левому верхнему углу. Например, если текущее окно было описано функцией window(1,8,80,25), обращение gotoxy(5,5); установит курсор в пятый относительный столбец окна (совпадает с абсолютным столбцом 4, отсчитываемым от О) в пятой относительной строке (так как верхняя строка окна задана равной 5, то абсолютная строка будет равна 5+8-1, если отсчет строк ведется от О) int wherex(void), int wherey(void) - сообщают столбец и строку текущей позиции курсора; возвращают целое число в диапазоне void clreol(void) - стирает в текстовом окне строку, на которую установлен курсор, начиная с текущей позиции курсора и до конца строки (до правой вертикальной границы окна). void clrscr(void) - очищает все текстовое окно. Цвет «заливки» окна при очистке будет соответствовать значению, установленному символической переменной attribute в описании окна (структурная переменная по шаблону text_info). void delline(void) - стирает в текстовом окне всю строку текста, на которую установлен курсор. void insline(void) - вставляет пустую строку в текущей позиции курсора со сдвигом всех остальных строк окна на одну строку вниз. При этом самая нижняя строка текста окна теряется. int cprintf(const char *format, ...) - выполняет вывод информации с преобразованием по заданной форматной строке, на которую указывает format. Является аналогом функции стандартной библиотеки printf(), но выполняет вывод в пределах заданного окна. В отличие от printf() функция cprintf() иначе реагирует на специальный символ '\п' - курсор переводится на новую строку, но не возвращается к левой границе окна. Поэтому для перевода курсора на начало новой строки текстового окна следует вывести последовательность символов CR- LF (OxOd,OxOa). Остальные специальные символы воздействуют на курсор так же, как и в случае функций стандартного ввода- вывода. Функция возвращает число выведенных байтов, а не число обработанных полей, как это делает функция printf(). int cputs(const char *str) - выводит строку символов в текстовое окно, начиная с текущей позиции курсора. На начало выводимой ASCIIZ-строки указывает str. Является аналогом функции стандартной библиотеки puts(), выполняет вывод в пределах заданного окна и при выводе не добавляет специальный символ '\п'. Реакция cputs() на специальный символ '\п' аналогична реакции cprintf(): курсор переводится на новую строку, но не возвращается к левой границе окна. Поэтому для перевода курсора на начало новой строки текстового окна следует вывести последовательность символов CR-LF (OxOd,OxOa). Остальные специальные символы воздействуют на курсор так же, как и в случае функций стандартного ввода/вывода. Функция возвращает ASCII-код последнего выведенного на экран символа. В отличие от puts() в функции отсутствует возврат символа EOF (вывод на экран происходит в любом случае). int movetext(int left, int top, int right, int bottom, int destleft, int desttop) - переносит окно, заданное координатами левого верхнего (left, top) и правого нижнего (right, bottom) углов, в другое место на экране, заданное координатами левого верхнего угла нового положения окна. Размеры окна по горизонтали и вертикали сохраняются. Все координаты задаются относительно координат верхнего левого угла экрана (1,1). Функция возвращает ненулевое значение, если перенос заданного окна выполнен. В противном случае возвращается О. Функция корректно выполняет перекрывающиеся переносы, т.е. переносы, в которых прямоугольная область-источник и область, в которую окно переносится, частично покрывают друг друга. int putch(int ch) - выводит символ в текущей позиции текстового окна экрана. Как и для функций cprintf(), cputs(), специальный символ '\п' вызывает только переход курсора на новую строку текстового окна без возврата к его левой вертикальной границе. Остальные специальные символы воздействуют на курсор так же, как и для функций стандартного ввода- вывода. int puttext(int left, int top, int right, int bottom, void source) - выводит на экран текстовое окно, заданное координатами левого верхнего (left, top) и правого нижнего (right, bottom) углов. Символы и атрибуты располагаются в буфере, адрес начала которого задаёт указатель source (функция «открывает» или «восстанавливает» текстовое окно экрана). Обычно используется вместе с функцией gettext(), выполняющей обратную операцию - запись в source символов/атрибутов, полностью описывающих все знакоместа текстового окна. Функция проверяет по заданным координатам окна, можно ли разместить окно на экране для текущего режима видеоадаптера и корректны ли эти координаты. В случае, когда окно успешно выведено, возвращается ненулевое значение. int gettext(int left, int top, int right, int bottom, void destin) - записывает в буфер destin символы и атрибуты текстового окна, заданного строкой и столбцом левого верхнего (left, top) и правого нижнего (right, bottom) углов. Первые два слова буфера занимают ширина и длина скопированного окна. Работает только в текстовых режимах видеоадаптера. Координаты задаются относительно верхнего левого угла экрана (1,1). В случае успеха возвращает ненулевое число. === Файловый ввод/вывод Прототипы функций ввода-вывода и используемые для этого типы данных описаны в стандартном заголовочном файле «stdio.h». Для файлового ввода/вывода в Си предусмотрены две основные группы функций: • функции низкоуровневого ввода/вывода, использующие для доступа к файлам целочисленные файловые дескрипторы; • функции более высокого уровня, осуществляющие буферизованный ввод/вывод с применением потоков. Поток в Си - это объект, служащий для доступа к файлам как к упорядоченной последовательности символов. Поток представляется структурой типа FILE, с которой ассоциирован некоторый открытый файл. При необходимости несколько потоков могут ссылаться на один и тот же файл.