Правила записи программы на языке Си 5 Правила формального описания синтаксиса языка программирования 6

Вид материалаЛекции

Содержание


11.2.Создание библиотек функций
12.Некоторые библиотечные функции языка Си
Подобный материал:
1   ...   20   21   22   23   24   25   26   27   28

11.2.Создание библиотек функций


При разработке программных проектов, состоящих из большого числа модулей, целесообразно пользоваться библиотеками модулей. Каждая такая библиотека обычно имеет расширение *.lib и может быть включена в проект с помощью средств поддержки проекта.

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

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

Для создания библиотек функций используются программы, называемые библиотекарями. В системе программирования фирмы Borland библиотекарь имеет имя tlib и может быть вызван из командной строки следующим образом:


БНФ:


"tlib " имя_библ ["/C"] ["/E"] команды [, файл_огл]


где имя_библиотеки - имя файла с создаваемой или модифицируемой библиотекой;

команды - последовательность команд модифицирующих библиотеку;

файл_огл - имя файла, в который будет помещено оглавление библиотеки;

/C - ключ, при наличии которого библиотекарь различает прописные и строчные буквы в именах внешних функций;

/E - клич, при наличии которого библиотекарь создает расширенный словарь.

Каждая команда модификации библиотеки имеет следующую форму:


БНФ:

("+" | "-" | "*" | "-+" | "-*") имя_модуля


где имя_модуля - имя скомпилированного модуля без расширения.

Символ "+" добавляет новый модуль в библиотеку, символ "-" удаляет модуль из библиотеки, символ "*" извлекает модуль из библиотеки без его удаления, символы "-+" или "+-" заменяют модуль в библиотеке, символы "-*" или "*-" извлекают и удаляют модуль из библиотеки.

Например, следующий вызов библиотекаря


tlib graph +line +draw +point, graph


создаст в текущем каталоге новую библиотеку с именем graph.lib, в которую будут добавлены модули line.obj, draw.obj и point.obj. Кроме того будет создан файл с оглавлением библиотеки, имеющий имя graph.lst.

12.Некоторые библиотечные функции языка Си


В этом разделе дается краткая информация о часто используемых функциях языка СИ.

12.1.Функции консольного ввода/вывода (уникальны для TC)


Рассматриваемые ниже функции уникальны для компиляторов фирмы Borland. Их прототипы находятся в файле .

Вертикальная позиция курсора в текущем текстовом окне (начиная с 1)


int wherey(void);


Горизонтальная текущая позиция курсора в текущем текстовом окне (начиная с 1)


int wherex(void);


Позиционирование курсора в текстовом окне


void gotoxy(int x, int y);


Установка активного текстового окна


void window(int left, int top, int right, int bottom);


Верхний левый угол экрана имеет координаты (1,1). Теперь для ввода доступно только это окно. Внешне это никак не проявляется. Действует на последующие операторы вывода текстовой информации.

Стирание текущего текстового окна


void clrscr(void);


Стереть до конца строки в текущем текстовом окне


void clreol(void);


Удалить строку в текущем текстовом окне


void delline(void);


Вставить пустую строку в текстовое окно в позицию курсора


void insline(void);


Строки ниже позиции курсора смещаются вниз, а последняя строка теряется.


Выбрать новый цвет фона символа в текстовом режиме


void textbackground(int newcolor);


Выбрать новый цвет символа в текстовом режиме


void textcolor(int newcolor);


Установить атрибут символа для текстовых функций вывода


void textattr(int newattr);


Скопировать текст с текстового экрана в память


int gettext(int left, int top, int right, int bottom,

void *destin);


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


Скопировать текст из памяти на текстовый экран


int puttext(int left, int top, int right, int bottom,

void *source);


Функция выполняет операцию, обратную к предыдущей. Возвращает не ноль в случае успеха.


Копирует текст на экране с одной прямоугольной области в другую


int movetext(int left, int top, int right, int bottom,

int destleft, int desttop);


Возвращает не ноль в случае успеха.


Получить символ с консоли без эха


int getch(void);


Получить символ с консоли с эхом на экране


int getche(void);


Вывести символ в текстовое окно


int putch(int ch);


Возвратить символ назад в буфер клавиатуры


int ungetch(int ch);


Возвращает код символа ch в случае успеха или EOF при ошибке.


Прочитать строку с консоли


char *cgets(char *str);


Байт str[0] перед вызовом функции должен содержать максимальную длину строки, допустимую для ввода. После возврата байт str[1] содержит число фактически прочитанных символов. Сама строка начинается с байта str[2]. Функция возвращает адрес прочитанной строки &str[2].


Вывести строку в текстовое окно


int cputs(const char *str);


Возвращает последний выведенный символ.


Вводит данные с консоли с преобразованию по формату


int cscanf(char *format [, address, ...]);


Возвращает число успешно прочитанных полей данных. При попытке прочитать символ конца файла возвращает значение EOF.


Выводит данные в текстовое окно с преобразованием по формату


int cprintf(const char *format[, argumet,...]);


Возвращает число выведенных байт информации. В отличие от функции printf() использует установки цвета. Не производит автоматического добавления символа '\r' к '\n'.