Функция 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, с которой ассоциирован
некоторый открытый файл. При необходимости несколько
потоков могут ссылаться на один и тот же файл.


