Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы программирования на языке C_4.docx
Скачиваний:
43
Добавлен:
25.03.2016
Размер:
299.55 Кб
Скачать

Доступ в библиотеку языка Си

Получение доступа к библиотеке зависит от системы. Во-первых, есть несколько различных мест расположения библиотечных функций, Например, getchar( ) обычно задают как макроопределение в файле stdio.h, в то время как strlen( ) обычно хранится в библиотечном файле. Во-вторых, различные системы имеют разные способы доступа к этим функциям. Вот три из них.

Автоматический доступ

Во многих больших системах UNIX вы только компилируете программы. А доступ к более общим библиотечным функциям выполняется автоматически.

Включение файла

Если функция задана как макроопределение, то можно директивой #include включить файл, содержащий ее определение. Часто подобные функции могут быть собраны в соответствующим образом названный заголовочный файл. Например, некоторые системы имеют файл ctype.h, содержащий макроопределения, задающие тип символа (прописная буква, цифра и т.д.)

Включение библиотеки

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

Очевидно, мы не сможем рассмотреть все особенности всех систем, но эти три примера показывают, что вас ожидает!

Связь с файлами

Один способ организации связи программы с файлом заключается в использовании операций переключения < и >. Этот метод прост, но ограничен. Язык Си предоставляет и более мощные методы связи с файлами. Рассмотрим использование функции fopen( ), которая открывает файл, затем применяются специальные функции ввода-вывода для чтения файла или записи в этот файл и далее используется функция fclose( ) для закрытия файла. Прежде чем исследовать эти функции, кратко познакомимся с сущностью файла.

Файл является частью памяти, обычно на диске, со своим именем. Мы считаем, что он содержит некоторую полезную информацию. Для операционной системы файл более сложен, но это системные проблемы, а не наши. Но мы должны знать, что означает файл для программы на языке Си. В предлагаемых для обсуждения функциях, работающих с файлами, язык Си рассматривает файл как структуру. Вот типичный пример, взятый из IBM-версии компилятора Lattice C:

struct_iobuf {

char*_ptr; /* текущий указатель буфера*/

int_cnt; /* текущий счетчик байтов*/

char*_base; /* базовый адрес буфера ввода-вывода*/

char_flag; /* управляющий признак*/

char_file; /* номер файла*/

}

#define FILE struct_iobuf /* краткая запись*/

Здесь мы не собираемся разбираться детально в этом определении. Главное состоит в том, что файл является структурой, и что краткое наименование шаблона - FILE. Многие системы используют директиву typedef для установления этого соответствия. Таким образом, программа, имеющая дело с файлами, будет использовать тип структуры FILE, чтобы делать так.

Рассмотрим пример чтения содержимого файла, названного File, и вывода его на экран:

#include <stdio.h>

main( )

{

FILE *in; /* описываем указатель на файл */

int ch;

if ((in = fopen("File", "r") ) != NULL) {

/* открываем File для чтения,

проверяя существует ли он */

/* указатель FILE ссылается теперь на File */

while ((ch = getc(in)) != EOF)

/* получаем символ из in */

putc(ch, stdout);

/* посылаем ch на стандартный вывод*/

fclose(in); /* закрываем файл */

}

else

printf (" Файл не открывается\"File\".\n");

}

Объясним работу: fopen( ), fclose и использование функций ввода-вывода файла.