Использование библиотечных функций

Библиотека Си - это множество предопределенных функций и
макро, предназначенное для использования в Си-программах.
Применение библиотеки Си делает программирование более лег-
ким и обеспечивает следующее:

1) интерфейс с функциями ОС (такими, как открытие и закры-
тие файлов);
2) использование быстрых и эффективных функций (таких, как
строковые манипуляции) в общих задачах программирования.

Библиотека Си особенно важна при использовании базовых фун-
кций, которые не содержатся в языке. Это, например, функции ввода
и вывода, распределения памяти и управления процессами.

Для обеспечения возможности контроля компилятором типов данных языка Си используются сопровождающие эту библиотеку include-файлы. Кроме определений и объявлений библиотечных функций как макро include-файлы содержат объявления функций со списками типов аргументов. Списки типов аргументов дают возможность компилятору контролировать обращение к библиотечным функциям. Это может быть полезным для обнаружения ошибок в программе, возникающих в результате несоответствия между типами фактических и формальных аргументов функций. Однако можно не использовать контроль типов аргументов.

К списку стандартных include-файлов библиотеки Си могут
быть добавлены новые include-файлы, содержащие списки типов аргументов для всех функций библиотеки Си.
Вызов библиотек СИ

Вызов Библиотек языка СИ Прежде чем вызвать процедуру библиотеки Си из программы
пользователя, нужно ее объявить в этой программе. Все библиотеч-
ные процедуры размещаются в объектном виде в библиотечных файлах,
которые сопровождают программное обеспечение компилятора Си. Во
время линкования программа увяэывается с соответствующим файлом
или файлами, чтобы разрешить ссылки на библиотечные функции и
обеспечить коды для вызываемых библиотечных функций.
В большинстве случаев подготовка к вызову библиотечных фун-
кций может быть осуществлена одним из следующих способов:
1) включением стандартного #include-файла в программу. Мно-
гие процедуры требуют объявлений и определений. Для этого можно
просто задать include-файлы, в которых определяются все требуемые
объявления и определения;
2) объявлением библиотечной функции, возвращающей значение
любого типа, кроме integer. Предполагается, что все функции возв-
ращают значение integer, если они заранее не объявлены. Обеспе-
чить эти объявления можно использовав библиотечные include-файлы,
содержащие объявления функций программы.
Можно также использовать другие способы, которые позволяют
вводить проверку аргументов в вызовах функций.

Обработка ошибок

При вызове функций должен быть обеспечен хороший способ об-
наружения и проверки ошибочных возвратов, если они есть. Иначе
программа может выработать неожиданный результат.

Для каждой функции библиотеки Си определено ожидаемое зна-
чение возврата. Для некоторых функций ошибочный возврат по неко-
торым причинам может быть не определенным. Это возникает, напри-
мер, тогда, когда типы возврата верного значения и ошибочного
совпадают. Некоторые функции при возникновении ошибки устанавли-
вают значение типа ошибки в глобальную переменную errno. Заметим,
что нельзя установить переменную errno, пока в описании функции
эта переменная не будет явно определена.

При использовании функций, устанавливающих errno, можно сверить значение errno со значениями ошибок, определенных в include-файле <errno.h>, или же
использовать функции perror и strerror. Если нужно распечатать
сообщение о стандартной ошибке - используется perror; если сооб-
щение об ошибке нужно расположить в строке, то используется
strerror.

Чтобы убедиться в практической возможности появления ошиб-
ки, нужно перед доступом к errno проверить возвращаемое значение.
Если при этом возникла ошибка, то нужно использовать значение
errno или функцию perror. Ошибки в математических функциях под-
держиваются функцией matherr.

Ошибки в операциях с потоком проверяются функцией ferror.
Функция ferror обнаруживает, установлены ли индикаторы ошибки
данного потока. Индикатор ошибки автоматически сбрасывается, если
поток закрывается или выбрасывается, или вызывается функция
clearerr для обнуления индикатора ошибки. Ошибки в низкоуровневых
операциях ввода/вывода требуют установки переменной errno. Про-
верка конца файла (eof) данного потока осуществляется функцией
feof. В низкоуровневых операциях ввода/вывода конец файла обнару-
живается при помощи функции eof или когда операция считывания
возвращает 0 как число прочитанных байтов.

Основные понятия массивов

Наши рекомендации