Лекция №5
Тема:
Библиотечные функции
Содержание:
Консольный
ввод/вывод и ввод/вывод портов
Математические
функции
Назначение
памяти
Интерфейс
с MS DOS
Управление
процессами
Поиск
и сортировка
Обработка
строк
Время
Разное
Консольный
ввод/вывод и ввод/вывод портов
ПРОЦЕДУРА
|
ИСПОЛЬЗОВАНИЕ
|
cgets
|
читает
строку с консоли.
|
cprintf
|
записывает
форматированные данные на
консоль.
|
cputs
|
записывает
строку на консоль.
|
cscanf
|
читает
форматированные данные с
консоли.
|
getch
|
читает
символ с консоли.
|
getche
|
читает
символ с консоли с эхо-ото-
бражением.
|
inp
|
читает
определенный порт ввода/
вывода.
|
kbhit
|
проверяет
нажатие клавиши на консоли
|
outp
|
записывает
определенный порт ввода/
вывода.
|
putch
|
записывает
символ на консоль.
|
ungetch
|
возвращает
("ungets") последний
считанный с консоли символ, так что
он становится следующим читаемым
символом.
|
Консольный ввод/вывод и процедуры ввода/вывода
портов реа-
лизованы как функции и объявлены в include-файле <conio.h>.
Эти
функции выполняют операции чтения и записи с/на консоль или на
определенный порт. Процедуры cgets, cscanf, getch, getche, kbhit
производят ввод с консоли, тогда как cprintf, cputs, putch,
ungetch записывают на консоль. Переназначение стандартного ввода
или стандартного вывода из командной строки вызывает переназначе-
ние ввода или вывода этих функций. Перед выполнением ввода/вывода
консоль и порт не должны быть открытыми или закрытыми, так как
нет процедур открытия или закрытия в данной категории. Процедуры
ввода/вывода порта - inp, outp - читают или записывают 1 байт
из
определенного порта. Процедуры консольного ввода/вывода - cgets,
cputs - позволяют считывать и записывать строки, cscanf, cprintf
- форматированные данные и символы. Для чтения и записи символов
применяются различные опции.
Процедура putch записывает символ на консоль; процедуры
getch, getche читают символ с консоли: getche вырабатывает
эхо
символа на консоль, getch этого не производит. Процедура ungetch
возвращает последний прочитанный символ; следующая операция чте-
ния с консоли начинается с возвращенного символа. Процедура kbhit
определяет, какая клавиша была нажата на консоли. Эта процедура
позволяет проверять ввод с клавиатуры перед попыткой чтения с
консоли.
Математические функции
ПРОЦЕДУРА
|
ИСПОЛЬЗОВАНИЕ
|
acos(x) |
Вычисляет arccos
x
|
asin(x) |
Вычисляет arcsin
x
|
atan(x) |
Вычисляет arctg
x
|
atan2(y,x) |
Вычисляет arctg(y/x)
|
bessel |
Вычисляет функцию
Бесселя (эта
процедура соответствует не одной, а
шести функциям: j0, j1, jn, y0, y1, yn) |
cabs(z) |
Находит модуль
комплексного числа z
|
ceil(x) |
Находит целую
часть x
|
_clear87( ) |
Получает и очищает
слово состояния
с плавающей точкой (floating point
status word). Недействительно с опцией
компилятора /FPa |
_control87(new,mask) |
Получает старое
слово состояния с
плавающей точкой и устанавливает новое
значение управляющего слова. Недейст-
вительно с опцией компиятора /FPa
|
cos(x) |
Вычисляет cos
x
|
cosh(x) |
Вычисляет гиперболический
косинус x |
dieeetomsbin(&x,&y) |
Преобразует IEEE-число
двойной
точности (x) в двоичный формат (y) |
dmsbintoieee(&x,&y) |
Преобразует двоичное
число двойной
точности в IEEE-формат |
exp(x) |
Вычисляет экспоненциальную
функцию
|
fabs(x) |
Вычисляет абсолютное
значение x
|
fieeetomsbin(&x,&y) |
Преобразует IEEE-число
одинарной
точности в двоичный формат |
floor(x) |
Находит наибольшее
целое, которое
меньше или равно x |
fmod(x,y) |
Находит остаток
с плавающей точкой
от деления x на у |
fmsbintoieee(&x,&y) |
Преобразует двоичное
число одинарной
точности (x) в формат IEEE (y) |
_fpreset( ) |
Реинициализирует
пакет математических
функций для чисел с плавающей точкой |
frexp(x,&n)
|
Представляет х
как мантиссу (возвра-
щаемое значение) степени n по основа-
нию 2 |
hypot(x,y) |
Вычисляет гипотенузу
прямоугольного
треугольника с катетами x и y |
ldexp(x,exp) |
Возводит 2 в exp
степень х раз
|
log(x) |
Вычисляет натуральный
логарифм х
|
log10(x) |
Вычисляет десятичный
логарифм х
|
matherr(x) |
Обрабатывает математические
ошибки |
modf(x,&n) |
Разделяет х на
целую (возвращаемое
значение) и дробную (n) части |
pow(x,y) |
Вычисляет х в
степени y
|
sin(x) |
Вычисляет sin
x
|
sinh(x) |
Вычисляет гиперболический
синус |
sqrt(x) |
Находит квадратный
корень из х |
_status87( ) |
Получает слово
состояния с плавающей
точкой. |
tan(x) |
Вычисляет tg x
|
tanh(x) |
Вычисляет гиперболический
тангенс х |
Математические процедуры, представленные выше, осуществляют
стандартные математические вычисления. Все математические проце-
дуры работают со значениями, представленными в форме с плавающей
точкой.
Объявления функций для математических процедур содержатся в
include-файле <math.h>, за исключением _clear87, _control87,
_fpreset и _status87, объявления которых находятся в
include-фай-
ле <float.h>.
Процедура matherr вызывается математическими функциями,
когда встречается ошибка. Эта процедура объявлена в библиотеке,
но может быть переопределена пользователем, если требуются другие
процедуры обработки ошибок.
Подключать matherr самому необязательно. Если эта функция
не подключена, каждая из математических процедур содержит вариан-
ты возврата.
Назначение памяти
ПРОЦЕДУРА
|
ИСПОЛЬЗОВАНИЕ
|
alloca
|
Назначает
блок памяти в стеке про-
граммы.
|
calloc
|
Назначает
память для массива.
|
_expand
|
Переназначает
блок памяти, не меняя
его местонахождения.
|
_ffree
|
Освобождает
блок, назначенный
посредством _fmalloc.
|
fmalloc
|
Назначает
блок памяти вне умалчиваемо-
го сегмента данных. Возвращается far-
указатель.
|
free
|
Освобождает
блок, назначенный
посредством calloc, malloc, realloc.
|
_freect
|
Возвращает
приблизительное число объ-
ектов заданного размера, назначенных
ранее.
|
_fmsize
|
Возвращает
размер блока памяти, на
который ссылается указатель far.
|
halloc
|
Назначает
память для huge-массива.
|
hfree
|
Освобождает
блок, назначенный
посредством процедуры halloc.
|
malloc
|
Назначает
блок.
|
_memavl
|
Возвращает
приблизительное число бай-
тов, имеющихся в памяти для размещения
|
_msize
|
Возвращает
размер блока, назначенного
посредством calloc, malloc, realloc.
|
_nfree
|
Освобождает
блок, назначенный
посредством функции _nmalloc.
|
_nmalloc
|
Назначает
блок памяти в умалчиваемом
сегменте данных. Возвращается "near-
pointer".
|
_nmsize
|
Возвращает
размер блока памяти, на
который ссылается near-указатель.
|
realloc
|
Переназначает
блок.
|
sbrk
|
Изменяет
значение прерывания.
|
stackavail
|
Возвращает
размер пространства (участ-
ка) стека, пригодного для назначения
посредством функции alloca.
|
Процедуры назначения памяти
позволяют назначать, освобож-
дать и переназначать блоки памяти. Процедуры назначения памяти
объявлены в include-файле <malloc.h>.
Процедуры calloc, malloc назначают блоки памяти. Процедура
malloc назначает заданное число байтов, а calloc - назначает
и
инициализирует в 0 массив с элементами заданного размера. Проце-
дуры _fmalloc, _nmalloc аналогичны malloc, за исключением
того,
что они позволяют назначать блок байтов, пока допускается адреса-
ция текущей модели памяти. Процедура halloc выполняет ту же
функ-
цию, что и calloc, с тем различием, что halloc назначает
прост-
ранство (участок) для huge-массивов.
Процедуры realloc, _expand изменяют размер назначенных бло-
ков. Функция _expand пытается изменить размер назначенного
блока
без передвижения его heap-положения; она увеличивает размер блока
к требуемому размеру или к такому, который позволяет текущее рас-
положение, каким бы маленьким оно ни было. Процедура realloc,
в
противоположность _expand, изменяет назначение в heap,
если прос-
транства недостаточно.
Процедура halloc возвращает huge-указатель на тип char,
_fmalloc - far-указатель на char,
_nmalloc - near-указатель на
char; остальные процедуры назначения памяти возвращают char
ука-
затель. Пространство памяти, которое выделяют эти процедуры,
удовлетворяет требованиям выравнивания для любого типа объекта.
Когда назначаемый тип объекта отличен от char, используется пре-
образование типов (type cast) для возвращаемого значения.
Процедуры free для calloc и malloc, _ffree для
_malloc,
_nfree для _nmalloc, hfree для halloc освобождают
предыдущее
назначение памяти, делая ее доступной для требуемого последующего
назначения.
Процедуры _freect, memavl сообщают о количестве памяти,
доступной для динамического распределения памяти в умалчиваемом
сегменте данных; _freect возвращает приблизительное число объек-
тов данного размера, которые могут быть назначены. _Memavl возв-
ращает суммарное значение байтов, доступных для требуемого назна-
чения.
Процедура _msize возвращает размер блока памяти, назначен-
ный вызовом любой из функций calloc, _expand, malloc, realloc.
Процедуры _fmsize, _nmsize возвращают размер блока памяти,
назна-
ченного соответственно вызовами _fmaloc и _nmalloc.
Процедура
sbrk - это низкоуровневая процедура назначения памяти. Она
изме-
няет значение программного прерывания, что позволяет ей восполь-
зоваться доступной динамической памятью.
Предупреждение! В общем случае программа, использующая
процедуру sbrk, не может быть использована с другими процедурами
назначения памяти, хотя их использование не запрещено. В частнос-
ти, использование sbrk изменяет значение прерывания, что приводит
к непредсказуемым результатам при вызовах других процедур назна-
чения памяти.
Интерфейс с MS DOS
ПРОЦЕДУРА
|
ИСПОЛЬЗОВАНИЕ
|
bdos |
Обращается к системному
вызову MS DOS.
Использует только регистры DX и AL. |
dosexterr |
Получает регистровые
значения систем-
ного вызова MS DOS 59Н. |
FP_OFF |
Возвращает значение
смещения far-ука-
зателя. |
FP_SEG |
Возвращает значение
сегмента far-ука-
зателя. |
int86 |
Вызывает прерывания
MS DOS.
|
int86x |
Вызывает прерывания
MS DOS.
|
intdos |
Обращается к системному
вызову MS DOS.
Использует регистры, отличные от DX и
AL. |
intdosx |
Обращается к системному
вызову MS DOS.
Использует регистры, отличные от DX и
AL. |
segread |
Возвращает текущее
значение регистров
сегмента. |
Процедуры FP_OFF и FP_SEG обеспечивают пользователю
легкий
доступ к сегменту и смещению far-указателя. Эти процедуры реали-
зованы как макро и определены в include-файле
<dos.h>. Остальные
процедуры реализованы как функции и объявлены в <dos.h>.
Функция dosexterr получает и запоминает значения регистров,
возвращаемые системным вызовом 59Н (расширение обработки ошибок).
Процедура bdos полезна для обращения к вызовам MS DOS, ис-
пользующих один либо оба регистра DX (DH/DL) и AL для
аргумен-
тов. Однако, bdos не может использоваться для обращения к систем-
ным вызовам, возвращающим код ошибки в регистре AX, если устанав-
ливается флаг переполнения. Программа не может обнаружить, уста-
новлен ли флаг переполнения, что не позволяет определить допусти-
мо или ошибочно значение регистра AX.
Процедура intdos также может быть использована для обраще-
ния к вызовам MS DOS, использующим регистры, отличные от DX
и AL.
Процедура intdosx аналогична intdos, но она используется,
когда
для системных вызовов требуется регистр ES либо регистр DS
со-
держит значение, отличное от определяемого по умолчанию сегмента
данных (например, при использовании far-указателя), либо когда в
программе для большой модели памяти делается системный вызов. При
вызове intdosx задается аргумент, который специфицирует значение
сегмента, используемого в вызове.
Процедура int86 может быть использована для вызова прерыва-
ний MS DOS. Процедура int86x похожа на int86,
но, по аналогии с
процедурой intdosx, предназначена для работы с программами
для
больших моделей памяти и far-объектами, (это описано выше для
intdosx).
Процедура segread возвращает текущие значения регистров
сегментов. Эта процедура обычно используется с процедурами
intdosx и int86x, чтобы получить корректные значения
сегментов.
Управление процессами
ПРОЦЕДУРА
|
ИСПОЛЬЗОВАНИЕ
|
abort
|
Прерывает
процесс
|
execl
|
Выполняет
child-процесс, используя
список аргументов
|
execle
|
Выполняет
child-процесс, используя
передачу списка аргументов и окружения
|
execlр
|
Выполняет
child-процесс, используя
PATH-переменную и список аргументов
|
execlpe
|
Выполняет
child-процесс, используя
PATH-переменную, данное окружение и
список аргументов
|
execv
|
Выполняет
child-процесс с массивом
аргументов
|
execve
|
Выполняет
child-процесс с передачей
массива аргументов и окружения
|
execvp
|
Выполняет
child-процесс, используя
PATH-переменную и массив аргументов
|
execvpe
|
Выполняет
child-процесс, используя
PATH-переменную, массив аргументов и
данное окружение
|
exit
|
Завершает
процесс
|
_exit
|
Завершает
процесс без начальной
установки буферов
|
getpid
|
Получает
уникальное имя процесса
|
onexit
|
Выполняет
функции после завершения
программы
|
signal
|
Обрабатывает
сигнал прерывания
|
spawnl
|
Выполняет
child-процесс со списком
аргументов
|
spawnle
|
Выполняет
child-процесс со списком
аргументов и данным окружением
|
spawnlp
|
Выполняет
child-процесс,используя PATH-
переменную и список аргументов
|
spawnlpe
|
Выполняет
child-процесс,используя PATH-
переменную, список аргументов и данное окружение
|
spawnv
|
Выполняет
child-процесс, используя
массив аргументов
|
spawnve
|
Выполняет
child-процесс, используя
массив аргументов и данное окружение
|
spawnvp
|
Выполняет
child-процесс, используя
PATH-переменную и массив аргументов
|
spawnvpe
|
Выполняет
child-процесс, используя
PATH-переменную, массив аргументов и
данное окружение
|
system
|
Выполняет
команду MS DOS
|
Термин "процесс"
определяется как программа, выполняемая
под управлением операционной системы. Процесс содержит команды
программы и данные, а также информацию, относящуюся к состоянию
процесса, такую как количество открытых файлов. Всякий раз про-
цесс начинается с выполнения программы на уровне MS DOS. Кроме
этого, можно запустить, остановить или управлять одним или нес-
колькими процессами из программы, используя для этого функции уп-
равления процессами.
Функции управления процессами позволяют делать следующее:
1. Идентифицировать процесс с
помощью уникального номера
(getpid);
2. Завершить процесс (abort, exit, _exit);
3. Обработать сигнал прерывания;
4. Стартовать новый процесс (семейства процедур exec и
spawn, плюс процедура system).
Все функции управления процессами, кроме signal, объявлены
в include-файле <process.h>. Функция signal объявлена
в
<signal.h>. Функции abort, exit и system объявлены
также в
include-файле <stdlib.h>.
Функции abort и _exit осуществляют непосредственный
выход
из процесса без начальной установки буферов потоков. Функция exit
завершает процесс и делает начальную установку буферов потока.
System вызывает указанную команду MS DOS.
Процедуры exec и spawn запускают новый процесс, называемый
child-процессом. Различие между процедурами exec и spawn
заключа-
ется в том, что процедура spawn способна возвращать управление
из
child-процесса его parent-процессу. Это возможно благодаря тому,
что оба процесса находятся в памяти (при условии, что не специфи-
цирована опция P_OVERLAY, т.е. если процессы не перекрывают
друг
друга в оверлее). При использовании функции exec вызванный
child-процесс перекрывает parent-процесс, поэтому возвращение уп-
равления последнему становится невозможным (если только не воз-
никла ошибочная ситуация при запуске на выполнение child-процес-
са).
Существуют 8 форм каждой из процедур spawn и exec. Различие
между этими формами понятно из таблицы 1. В первой колонке
этой
таблицы даны имена функций. Во второй колонке указано, использу-
ется ли текущая PATH-установка для размещения файла, который бу-
дет выполняться как child-процесс. В третьей колонке описывается
способ передачи аргументов в child-процесс. Передача аргументов
списком означает, что они пересылаются в child-процесс из списка
по одному процедурой exec или spawn; передача массива
аргументов
означает, что отдельные аргументы запоминаются в массиве, а адрес
(указатель) этого массива передается в child-процесс.
Метод передачи списком
используется обычно тогда, когда количество аргумен-
тов постоянно или становится известным во время компиляции, а пе-
редача массива применяетcя, если количество аргументов определя-
ся во время выполнения процесса. В последней колонке указано ког-
да child-процесс "наследует" окружение, установленное в
вызвавшем
его parent-процессе, и когда ему может быть передана таблица ус-
тановленного окружения для необходимой корректировки.
Таблица
1
Процедура
|
Использование PATH-установки
|
Способ передачи
аргументов
|
Окружение
|
execl,
spawnl
|
Не
исп. PATH
|
Списком
|
Наследует
от parent-
процесса
|
execle,spawnle
|
Не
исп. PATH
|
Списком
|
Передается
указатель
на таблицу окружения
в качестве последне-
го аргумента списка
|
execlp,spawnlp
|
Используется
PATH
|
Списком
|
Наследует
от parent-
процесса
|
execlpe,spawnlpe
|
Используется
PATH
|
Списком
|
Передается
указатель
на таблицу окружения
в качестве последне-
го аргумента списка
|
execv,spawnv
|
Не
исп. PATH
|
Массивом
|
Наследует
от parent-
процесса
|
execve,spawnve
|
Не
исп. PATH
|
Массивом
|
Передается
указатель
на таблицу окружения
в качестве последне-
го аргумента списка
|
execvp,spawnvp
|
Используется
PATH
|
Массивом
|
Наследует
от parent-
процесса
|
execvpe,spawnvpe
|
Используется
PATH
|
Массивом
|
Передается
указатель
на таблицу окружения
в качестве последне-
го аргумента списка
|
Поиск
и сортировка
ПРОЦЕДУРА
|
ИСПОЛЬЗОВАНИЕ
|
bsearch
|
Осуществляет
бинарный поиск
|
lfind
|
Осуществляет
последовательный поиск
данного значения
|
lsearch
|
Осуществляет
последовательный поиск и
добавляет данное значение в массив,
если оно не найдено
|
qsort
|
Осуществляет
быструю сортировку
|
Функции bsearch,
lfind, lsearch и qsort являются полезными
утилитами для осуществления двоичного и последовательного поиска
и быстрой сортировки. Они объявлены в include-файле <search.h>.
Обработка
строк
ПРОЦЕДУРА
|
ИСПОЛЬЗОВАНИЕ
|
strcat
|
Добавляет
строку
|
strchr
|
Обнаруживает
первое вхождение данного
символа в строке
|
strcmp
|
Сравнивает
две строки
|
strcmpi
|
Сравнивает
две строки с игнорированием
типа регистра (верхнего или нижнего).
Здесь "i" указывает на то, что данная
функция "нечувствительна" к типу ре-
гистра)
|
strcpy
|
Копирует
одну строку в другую
|
strcspn
|
Обнаруживает
первое вхождение символа из
данной последовательности символов в
строке
|
strdup
|
Размножает
строку
|
strerror
|
Сохраняет
в строке сообщения о систем-
ной ошибке и сообщения о некоторых
избранных ошибках пользователя
|
stricmp
|
Сравнивает
две строки c игнорированием
типа регистра (аналогично с strcmpi)
|
strlen
|
Определяет
длину строки
|
strlwr
|
Преобразует
строку в символы нижнего
регистра (в строчные буквы)
|
strcat
|
Присоединяет
к строке n символов
|
strncmp
|
Сравнивает
n символов в двух строках
|
strncpy
|
Копирует
n символов из одной строки в
другую
|
strnicmp
|
Сравнивает
n символов в двух строках
с игнорированием типа регистра (см. при-
мечание к strcmpi)
|
strnset
|
Заполняет
n символов строки заданным
символом
|
strpbrk
|
Обнаруживает
первое вхождение символа
из одной строки в другой строке
|
strrchr
|
Обнаруживает
последнее вхождение данного
символа в строке
|
strrev
|
"Перевертывает"
строку (reverses)
|
strspn
|
Находит
в строке первую подстроку из
данной последовательности символов
|
strstr
|
Обнаруживает
первое вхождение данной
строки в другой строке
|
strtok
|
Находит
очередную лексему (token) в
строке
|
strupr
|
Переводит
строку в верхний регистр (пре-
образует буквы в прописные)
|
Функции обработки строк объявлены в include-файле
<string.h>. В библиотеке Си имеется широкий выбор этих функций
. С их помощью
можно делать следующее:
осуществлять сравнение строк;
исследовать строки, отдельные символы или символы из данно-
го набора;
копировать строки;
преобразовывать символы строк в разные регистры;
заполнять символы в строке данным симвоом;
"перевертывать" символы в строках;
вставлять в строки разделители;
запоминать в строке сообщения об ошибках.
Все функции обработки строк работают со строками, заканчи-
вающимися нулевым символом '\0'. Для работы с массивами симво-
лов, которые не заканчиваются нулевым символом, используются про-
цедуры манипуляции с буферами, которые описаны ранее в этом же
разделе.
Время
ПРОЦЕДУРА
|
ИСПОЛЬЗОВАНИЕ
|
asctime |
Преобразует значение
времени из
структуры в строку символов |
ctime |
Преобразует значение
времени из
длинного целого в строку символов |
ftime |
Получает текущее системное
время в виде
структуры |
gmtime |
Преобразует время
из целого в структуру
|
localtime |
Преобразует время
из целого в структуру
с местной коррекцией |
time |
Получает текущее время
как длинное целое
|
tzset |
Устанавливает переменные
внешнего
времени из переменной окружения |
utime |
Устанавливает время
модификации файла
|
Перечисленные функции времени (временные функции) предназ-
начены для вычисления текущего времени, его преобразования и за-
поминания для конкретных нужд. Текущее время всегда берется из
системного времени.
Функции time
и ftime возвращают текущее время
как число двойной точности, соответствующее значению времени по
Гринвичу (выверенного на 1 января 1970 г.). Это значение может
быть преобразовано, видоизменено и запомнено различными способа-
ми, для чего используются функции asctime, ctime, gmtime и
localtime. Функция utime устанавливает модифицированное
время для
определенных файлов, используя либо текущее время, либо значение
времени, запомненное в структуре.
Для функции ftime нужны два include-файла: <sys\types.h>
и <sys\timeb.h>. Функция utime также нуждается в двух include-
файлах <sys\types.h> и <sys\utime.h>. Остальные
функции времени
объявлены в include-файле <time.h>.
Разное
ПРОЦЕДУРА
|
ИСПОЛЬЗОВАНИЕ
|
abs
|
Находит
абсолютное значение целой
величины.
|
assert
|
Проверяет
на логическую ошибку.
|
getenv
|
Задает
значение переменной окружения.
|
labs
|
Находит
абсолютное значение длинной
целой величины.
|
longjmp
|
Восстанавливает
сохраненное состояние
стека.
|
perror
|
Печатает
сообщения об ошибке.
|
putenv
|
Добавляет
или модифицирует значение
переменной окружения.
|
rand
|
Выбирает
псевдослучайное число.
|
setjmp
|
Сохраняет
стек окружения.
|
srand
|
Инициализирует
псевдослучайный ряд.
|
swab
|
Обменивает
байты данных.
|
Все процедуры, за исключением assert, longjmp, setjmp, объ-
явлены в <stdlib.h>. Процедура assert является макро
и определена
в <assert.h>. Функции longjmp и setjmp объявлены
в <setjmp.h>.
Функции abs и labs возвращают абсолютное значение типа int
и long соответственно. Эти две функции объявлены в include-файлах
<math.h> и <stdlib.h>.
Процедуры getenv и putenv обеспечивают доступ к таблице
пе-
ременных окружения. Глобальная переменнная environ также указыва-
ет на эту таблицу, но ее рекомендуется использовать в случаях,
если таблица переменных окружения устанавливается чаще, чем ис-
пользуется.
Процедура perror печатает системное сообщение об ошибке
вместе с необязательным сообщением, предусмотренным пользователем
для последнего вызова системного уровня, при котором выработана
ошибка.
Процедура perror объявлена в include-файлах <stdlib.h>
и
<stdio.h>. Номер ошибок хранится в переменной errno.
Системное
сообщение об ошибке выбирается из массива sys-errlist. Переменная
errno правильно устанавливает ошибку только для тех процедур, для
которых точно определены переменные errno.
Функции rand и srand инициализируют и генерируют псевдослу-
чайную последовательность целых.
Функции longjmp и setjmp сохраняют и восстанавливают состо-
яние стека. Эти процедуры позволяют выполнить нелокальный пере-
ход.
Процедура swab (также объявленная в <stdlib.h>) обменивает
байты двоичных данных. Она обычно используется для подготовки
данных при передаче их в вычислительную машину, которая использу-
ет отличный порядок байтов.
|