Язык программирования Си для персонального компьютера - C. Бочков
Шрифт:
Интервал:
Закладка:
Функции вода/вывода с консольного терминала и порта
Функции ввода/вывода для консольного терминала выделены в отдельную группу, потому что они используют специфические особенности компьютера IBM/PC (наличие специального видеоадаптера) и не являются переносимыми на другие типы компьютеров.
функция Краткое описание cgets чтение строки с консоли cprintf запись данных на консольный терминал по формату cputs вывод строки на консольный терминал getch чтение символа с консоли getche чтение символа с консоли с эхо-печатью kbhit проверка нажатия клавиши на консоли putch вывод символа на консольный терминал ungetch возврат последнего прочитанного символа с консольного символа обратно с тем, чтобы он стал следующим символом для чтенияСистема программирования MSC предоставляет дополнительно функцию cscanf - чтение данных с консоли по формату.
Система программирования ТС предоставляет дополнительно функцию getpass - ввод с терминала пароля без эхо-печати
Прототипы функций содержатся в файле conio.h. Устройства: консольный терминал и порт не могут быть открыты или закрыты перед выполнением в/в, поэтому функции fopen и fclose не вызываются. Функции в/в с консольного терминала позволяют читать и записывать строки (cgets и cputs), форматированные данные (cscanf и cprintf) и символы. Функция kbhit определяет: было ли нажатие клавиши на консольном терминале. Эта функция позволяет определить наличие символов для ввода с клавиатуры до попытки чтения.
Математические функции
Функция Краткое описание abs нахождение абсолютного значения выражения типа int acos вычисление арккосинуса asin вычисление арксинуса atan вычисление арктангенса х atan2 вычисление арктангенса от у/х cabs нахождение абсолютного значения комплексного числа ceil нахождение наименьшего целого, большего или равного х _clear87 получение значения и инициализация слова состояния сопроцессора и библиотеки арифметики с плавающей точкой _control87 получение старого значения слова состояния для функций арифметики с плавающей точкой и установка нового состояния cos вычисление косинуса cosh вычисление гиперболического косинуса exp вычисление экспоненты fabs нахождение абсолютного значения типа double floor нахождение наибольшего целого, меньшего или равного х fmod нахождение остатка от деления х/у _fpreset повторная инициализация пакета плавающей арифметики frexp разложение х как произведения мантиссы на экспоненту 2n hypot вычисление гипотенузы labs нахождение абсолютного значения типа long ldexp вычисление х*2exp log вычисление натурального логарифма log10 вычисление логарифма по основанию 10 matherr управление реакцией на ошибки при выполнении функций математической библиотеки modf разложение х на дробную и целую часть pow вычисление х в степени у sin вычисление синуса sinh вычисление гиперболического синуса sqrt нахождение квадратного корня _status87 получение значения слова состояния с плавающей точкой tan вычисление тангенса tanh вычисление гиперболического тангенсаСистема программирования 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Система программирования ТС предоставляет дополнительно функции: