C. Бочков - Язык программирования Си для персонального компьютера
Функции вода/вывода с консольного терминала и порта
Функции ввода/вывода для консольного терминала выделены в отдельную группу, потому что они используют специфические особенности компьютера IBM/PC (наличие специального видеоадаптера) и не являются переносимыми на другие типы компьютеров.
функция Краткое описание cgets чтение строки с консоли cprintf запись данных на консольный терминал по формату cputs вывод строки на консольный терминал getch чтение символа с консоли getche чтение символа с консоли с эхо-печатью kbhit проверка нажатия клавиши на консоли putch вывод символа на консольный терминал ungetch возврат последнего прочитанного символа с консольного символа обратно с тем, чтобы он стал следующим символом для чтения
Система программирования MSC предоставляет дополнительно функцию cscanf - чтение данных с консоли по формату.
Система программирования ТС предоставляет дополнительно функцию getpass - ввод с терминала пароля без эхо-печати
Прототипы функций содержатся в файле conio.h. Устройства: консольный терминал и порт не могут быть открыты или закрыты перед выполнением в/в, поэтому функции fopen и fclose не вызываются. Функции в/в с консольного терминала позволяют читать и записывать строки (cgets и cputs), форматированные данные (cscanf и cprintf) и символы. Функция kbhit определяет: было ли нажатие клавиши на консольном терминале. Эта функция позволяет определить наличие символов для ввода с клавиатуры до попытки чтения.
Математические функции
Система программирования MSC предоставляет дополнительно функции:
Функция Краткое описание bessel вычисление функции Бесселя dieeetomsbin преобразование плавающего числа двойной точности из IEEE-формата в Microsoft-формат dmsbintoieee преобразование плавающего числа двойной точности из Microsoft-формата в IEEE-формат fieeetomsbin преобразование числа с плавающей точкой из IEEE-формата в Microsoft-формат fmsbintoieee преобразование числа с плавающей точкой из Microsoft-формата в IEEE-форматСистема программирования ТС предоставляет дополнительно функции:
Функция Краткое описание _matherr управление реакцией на ошибки при выполнении функций из математической библиотеки pow10 вычисление десятичной степениПрототипы функций содержатся в файле math.h, за исключением прототипов функций _clear87, _control87, _fpreset, status87, которые определены в файле float.h. Функция matherr (ее пользователь может задать сам в своей программе) вызывается любой библиотечной математической функцией при возникновении ошибки. Эта программа определена в библиотеке, но может быть переопределена пользователем, если она необходима, для установки различных процедур обработки ошибок.
Динамическое распределение памяти
Библиотека языка Си предоставляет механизм распределения динамической памяти (heap). Этот механизм позволяет динамически (по мере возникновения необходимости) запрашивать из программы дополнительные области оперативной памяти.
Работа функций динамического распределения памяти различается для различных моделей памяти, поддерживаемых системой программирования (смотри первую части книги).
В малых моделях памяти (tiny, small, medium) доступно для использования все пространство между концом сегмента статических данных программы и вершиной программного стека, за исключением 256-байтной буферной зоны непосредственно около вершины стека.
В больших моделях памяти (compact, large, huge) все пространство между стеком программы и верхней границей физической памяти доступно для динамического размещения памяти.
Следующие функции используются для динамического распределения памяти:
Функция Краткое описание calloc выделить память для массива free освободить блок, полученный посредством функции calloc, malloc или realloc malloc выделить блок памяти realloc переразместить ранее выделенный блок памяти, изменив его размер sbrk переустановить адрес первого байта оперативной памяти, недоступного программе (начала области памяти вне досягаемости программы)Система программирования MSC предоставляет дополнительно функции:
Функция Краткое описание alloca выделение блока памяти из программного стека _expand изменение размера блока памяти, не меняя местоположения блока _ffree освобождение блока, выделенного посредством функции fmalloc _fmalloc выделение блока памяти вне данного сегмента _freect определить примерное число областей заданного размера, которые можно выделить _fmsize возвращает размер блока памяти, на который указывает дальний (far) указатель halloc выделить память для большого массива (объемом более 64 Кбайтов) hfree освободить блок памяти, выделенный посредством функции halloc _memavl определить примерный размер в байтах памяти, доступной для выделения _msize определить размер блока, выделенного посредством функций calloc, malloc, realloc _nfree освобождает блок, выделенный посредством _nmalloc _nmalloc выделить блок памяти в заданном сегменте _nmsize определить размер блока, на которой указывает близкий (near) указатель stackavail определить объем памяти, доступной для выделения посредством функции allocaСистема программирования ТС предоставляет дополнительно функции: