Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по С Живицкая (Мет пособие).doc
Скачиваний:
112
Добавлен:
15.06.2014
Размер:
2.11 Mб
Скачать

2.6.Библиотечные функции языка с.

При создании компилятора Си решались 2 задачи:

  1. разрабатывался сам компилятор

  2. создавалась библиотека функции.

Библиотека представляет собой собрание функций. В отличие от объектных файлов в библиотечном файле хранится название каждой функции, объектный код функции и информация, касающаяся перемещаемости файла, необходимая для редактирования файла.

Когда программа делает ссылку на функцию, содержащуюся в библиотеке, компоновщик отыскивает эту функцию и добавляет её код к программе. Таким образом, в программе добавляются только те функции, которые будут в ней использоваться. В стандарте ANSI определены как содержание, так и форма стандартной библиотеки. Borland C++ удовлетворяет этому стандарту, поскольку предоставляет все функции, определённые стандартом ANSI.

Многие библиотечные функции работают со своими особыми типами данных и со структурами, к которым программа должна иметь доступ. Эти структуры и типы определяются в заголовочных файлах, поставляемых с компилятором и эти заголовочные файлы должны включаться с помощью #include.

В каждый файл, использующий функции, на которые они ссылаются. Кроме того, у всех библиотечных функций имеются прототипы, определённые в заголовочном файле. Многие библиотечные функции в действительности являются не функциями, а макроопределениями, содержащимися в заголовочном файле. Если по каким-либо причинам необходимо избежать использования стандартного макроса можно отменить его определение, используя препроцессорную директиву #undef.

Наиболее употребительные заголовочные файлы.

ALLOC.H – функции динамического выделения памяти;

CONIO.H – функции для работы с экраном;

CTYPE.H – функции для работы с символами ANSI языка Си;

DIR.H – функции для работы с каталогами;

DOS.H – функции интерфейса DOS;

ERRNO.H – определяет коды ошибок ANSI языка Си;

FCNTL.H – определяет константы, используемые функцией open;

GRAPHICS.H – графические функции;

MATH.H – содержит разные определения, используемые математической библиотекой ANSI языка Cи;

SHARE.H – совместное использование файлов;

STDIO.H – объявления для стандартных потоков ввода-вывода;

SIRSTREAM.H – классы потоков ввода-вывода на базе массивов

TIME.H – функции системного времени.

#include>graphics>

main()

{int gd=DETECT, gm; /*графический драйвер, для него задан режим автоматического выбора DETEC, gm – способ представления графической информации*/

initgraph (&gd,gm.,””);

circle(100,120,80); /*вычерчивание окружности*/

getch(); /*ожидание нажатия любой клавиши*/

closegraph(); /*переход в текстовый режим*/

}

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

1) Последовательный или буферезованный доступ.

2) Ввод, вывод нижнего уровня, или прямой доступ.

Наиболее распространен последовательный доступ. При последовательном доступе обмен производится через специальный буфер, резервируемый системой ввода - вывода.

Компелятор С рассматривает ввод - вывод, как поток байтов, которые поступают последовательно байт за байтом. Каждый поток связывается с файлом на магнитном диске, или файлом, который поставлен в соответствии физическому устройству, например клавиатуре.

Связь потока с файлом устанавливается при его открытии, т.к С является языком системного програмирования, наиболее часто используется функция для ввода - вывода символов. В некоторых реализациях эти функции описаны в головном файле stdio.h.

Этот файл можно подключить к программе с помощью дерективы include препроцессора:

# include < stdio.h >

Содержащие файла stdio.h зависит от реализации обычно в него включаются:

1) макроопределение, наиболее часто встречающихся функций ввода -

вывода.

2) макроопределение типа данных FILE

3) макроопределение параметров используемых в вызовах библиотечных функций. Ряд библиотечных фукнкций (функции для ввода-вывода символов getchar и putchar форматного ввода-вывода scanf, printf были рассмотрены ранее).

Рассмотрим неформатный ввод-вывод строк