Подпрограммы отображения текста в окнах



Мы поможем в написании ваших работ!


Мы поможем в написании ваших работ!



Мы поможем в написании ваших работ!


ЗНАЕТЕ ЛИ ВЫ?

Подпрограммы отображения текста в окнах



 

Эти подпрограммы выводят текст на экран.

 


clreol (conio.h)

Стирает в текстовом окне часть строки.

clrscr (conio.h)

Очищает текстовое окно.

delline (conio.h)

Удаляет строки из текстового окна.

gettext (conio.h)

Копирует текст из текстового окна экрана.

gettextinfo (conio.h)

Возвращает информацию о текстовом режиме.

gotoxy (conio.h)

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

highvideo (conio.h)

Устанавливает повышенную яркость текстовых символов.

insline (conio.h)

Вставляет в текстовое окно пустую строку.

lowvideo (conio.h)

Устанавливает пониженную яркость текстовых символов.

movetext (conio.h)

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

normvideo (conio.h)

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

puttext (conio.h)

Переносит текст из памяти на экран в алфавитно-цифровом режиме

textattr (conio.h)

Устанавливает текстовые атрибуты.

textbackground (conio.h)

Устанавливает новый цвет фона.

textcolor (conio.h)

Устанавливает новый цвет символов в текстовом режиме.

textmode (conio.h)

Переводит экран в текстовый режим.

wherex (conio.h)

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

wherey (conio.h)

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

window (conio.h)

Описывает активное в текстовом режиме окно.

 


 

 

Подпрограммы работы со временем и датой

 

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

 


asctime (time.h)

Преобразует date и time в формат ASCII.

localtime (time.h)

Превращает дату и время в структуру.

ctime (time.h)

Переводит дату и время в строковое представле ние.

setdate (dos.h)

Устанавливает дату в MS-DOS

difftime (time.h) Вычисление разницы между двумя моментами времени.

settime (dos.h)

Устанавливает системное время

dostounix (dos.h)

Преобразование даты и времени в формат UNIX.

stime (time.h)

Устанавливает системные дату и время.

ftime (sys\timeb.h)

Сохраняет текущее время в timeb структуре.

time (time.h)

Получает время дня.

getdate (dos.h)

Получает дату MS-DOS.

tzset (time.h)

Устанавливает значение глобальных переменных daylight, timezone и tzname.

gettime (dos.h)

Получает системное время.

unixtodos (dos.h)

Преобразует дату и время к формату DOS.

gmtime (time.h)

Преобразует дату и время в Гринвическое время.


 

 

Подпрограммы с переменным списком аргументов

 

Эти подграмммы работают с переменным списком аргументов.

 

va_arg (stdarg.h)

va_end (stdarg.h)

va_start (stdarg.h)

 

 

Г л о б а л ь н ы е п е р е м е н н ы е.

 

-----------------------------------------------------------------

_argc

-----------------------------------------------------------------

Назначение Содержит число аргументов командной строки.

Синтаксис extern int _argc;

Объявлена в dos.h

Замечания _argc имеет значение числа аргументов argc, передаваемых main при запуске программы.

 

 

-----------------------------------------------------------------

_argv

-----------------------------------------------------------------

Назначение Массив указателей на аргументы командной строки.

Синтаксис extern char *argv[];

Объявлена в dos.h

Замечания _argv указывает на массив, содержащий подлинные аргументы командной строки (элементы argv[]), передаваемые main при запуске программы.

 

 

-----------------------------------------------------------------

Daylight

-----------------------------------------------------------------

Назначение Показывает, используется ли летнее время.

Синтаксис extern int daylight;

Объявлена в time.h

Замечания daylight используется функциями обработки времени и даты. Устанавливается функциями tzset, ftime и localtime в 1 для летнего времени и 0 для стандартного.

 

 

-----------------------------------------------------------------

Directvideo

-----------------------------------------------------------------

Назначение Флаг, который управляет выводом на экран.

Синтаксис extern int directvideo;

Объявлена в conio.h

Замечания directvideo управляет выводами на экран, используемыми в вашей программе (с помощью cputs, например), которые могут идти либо прямо в видеопамять (directvideo=1), либо посредством вызова функций BIOS (directvideo=0).

По умолчанию directvideo=1 (вывод на экран идет прямо через видеопамять). Для того, чтобы использовать directvideo=1, аппаратная поддержка видео должна быть идентична адаптерам дисплея фирмы IBM. Установка directvideo=0 позволяет вам использовать вывод на дисплей во всех системах, которые имеют BIOS, совместимый с IBM.

 

 

-----------------------------------------------------------------

_8087

-----------------------------------------------------------------

Назначение Флаг микросхемы сопроцессора.

Синтаксис extern int _8087;

Объявлена в dos.h

Замечания Переменная _8087 устанавливается в ненулевое значение (1,2 или 3), если логика автообнаружения программы инициализации обнаруживает сопроцессор работы с плавающей точкой (8087, 80287 или 80387). В ином случае переменная _8087 устанавливается в ноль.

Логика автообнаружения может быть отменена установкой переменной среды 87 в YES или NO. (Команды SET 87=YES и SET 87=NO; до и после знаков равенства обязательно не должно быть пробелов.) В этом случае переменная _8087 среагирует на отмену и будет установлена в 1 или 0.

Для получения более подробной информации о переменной среды 87 обратитесь к главе 12 "Руководства пользователя Турбо Си".

Вы должны иметь в своей программе операторы работы с плавающей точкой, чтобы переменная _8087 правильно была определена.

 

 

-----------------------------------------------------------------

Environ

-----------------------------------------------------------------

Назначение Обеспечивает доступ к переменным среды DOS.

Синтаксис extern char *environ [];

Объявлена в dos.h

Замечания environ - это массив указателей на строки, который используется для доступа и модификации переменных среды процесса. Каждая строка имеет вид:

envvar = varvalue,

где envvar - имя переменной среды (например PATH), а varvalue - значение (строка), в которое установлена envvar (например C:\BIN; C:\DOS). Строка varvalue может быть пустой.

Когда программа начинает выполняться, установленное состояние среды DOS передается непосредственно в программу. Заметим, что envp (третий аргумент функции main) равен начальному значению environ.

Доступ к массиву environ можно получить с помощью подпрогрммы getenv. Однако единственной подпрограммой, которая может использоваться для добавления, изменения или уничтожения элементов массива environ, является функция putenv, поскольку модификация массива среды процесса может изменить его размеры и размещение. (При этом environ всегда также соответственно изменяется.)

 

 

-----------------------------------------------------------------

errno, _doserrno, sys_errlist, sys_nerr

-----------------------------------------------------------------

Назначение Позволяют функции perror печатать сообщения об ошибках.

Использование extern int errno; extern int _doserrno; extern char *sys_errlist[]; extern int sys _nerr;

Объявлены в errno.h, stdlib.h (errno,_doserrno,sys_errlist, sys_nerr) dos.h (_doserrno)

Замечания errno, sys_errlist и sys_nerr используются функцией perror для печати сообщений об ошибках, когда какие-либо библиотечные функции по тем или иным причинам не могут выполнить поставленные задачи. _doserrno - переменная, которая содержит большинство кодов ошибок DOS, используемых переменной errno (однако perror непосредственно _doserrno никогда не использует).

_doserrno: в случае любой системной ошибки или сбоя этой переменной присваивается код ошибки DOS. Переменная errno используется параллельно ей (подобно тому, как это осуществляется в UNIX - системах).

errno: когда в системе происходит сбой или случается ошибка, в errno устанавливается индикатор типа ошибки. Иногда значения errno и _doserrno эквивалентны. Но переменная errno не содержит текущие коды ошибок DOS, которые содержит _doserrno. В то же время ряд ошибок фиксируется только в errno.

sys_errlist: позволяет управлять форматом сообщения об ошибке. Массив строк сообщений содержится именно в sys_errlist. Переменная errno может быть использована для индексирования этого массива с целью поиска строки массива, соответствующего номеру (коду) ошибки. Строки массива не содержат ни одного символа перевода строки.

sys_nerr: определена как количество строк сообщений об ошибках в массиве sys_errlist.

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

Мнемоника Содержание

E2BIG Список аргументов слишком длинный

EACCES Доступ невозможен

EBADF Неверный номер файла

ECONTR Разрушены блоки памяти

ECURDIR Попытка переместить

CurDir EDOM Ошибка области определения

EEXIST Файл уже существует

EINVACC Неправильный код доступа

EINVAL Неправильный аргумент

EINVDAT Неправильные данные

EINVDRV Неправильно специфицировано устройство

EINVENV Неправильная среда

EINVFMT Неправильный формат

EINVFNC Неправильный номер функции

EINVMEM Неправильная адресация блока памяти

EMFILE Слишком много открытых файлов

ENMFILE Нет больше файлов

ENODEV Нет такого устройства

ENOENT Нет такого файла или каталога

ENOEXEC Ошибка в формате загрузочного модуля

ENOFILE Нет такого файла или каталога

ENOMEM Не хватает оперативной памяти

ENOPATH Маршрут доступа не найден

ENOTSAM Разные (несовместимые) устройства

ERANGE Результат превышает область допустимых значений (разрядную сетку)

EXDEV Перекрестная ссылка на устройства (клинч)

EZER0 Ошибка 0

Ниже приведен список фактических мнемонических кодов текущих ошибок DOS, которые может содержать _doserrno (эти значения могут, но, возможно, и не могут, быть сопоставлены - через переменную errno - строкам сообщений об ошибках из массива sys-errlist).

Мнемоника Код ошибки DOS

EINVAL Неправильная функция

E2BIG Неправильная среда

EACCES Доступ невозможен

EACCES Неправильный доступ

EACCES Этот каталог является текущим

EBADF Неверная операция

EFAULT Зарезервирован

EINVAL Неправильные данные

EMFILE Слишком много открытых файлов

ENOENT Нет такого файла или каталога

ENOEXEC Ошибка в формате загрузочного модуля

ENOMEM Блок памяти mcb разрушен

ENOMEM Не хватает памяти

ENOMEN Плохой блок памяти

EXDEV Неправильное устройство

EXDEV Различные (несовместимые) устройства

Для получения более полной информации о кодах ошибок DOS обратитесь к "Руководству программиста MS-DOS" фирмы Microsoft.

 

 

-----------------------------------------------------------------

_fmode

-----------------------------------------------------------------

Назначение Определяет режим обработки файла по умолчанию.

Синтаксис extern unsigned _fmode;

Объявлена в fcntl.h

Замечания _fmode определяет, с каким признаком (текстовый или двоичный) файл будет открыт и обработан. По умолчанию значение _fmode есть O_TEXT, означающее, что файл будет прочитан как текстовый. Если значение _fmode есть O_BINARY, файл будет открыт и прочитан как двоичный (значения O_TEXT и O_BINARY определены в fcntl.h).

В текстовом виде при вводе комбинация символов CR/LF (возврат каретки/перевод строки) преобразуется в один символ перевода строки (LF).

При выводе из файла осуществляется обратное действие: символы LF преобразуются в комбинации CR/LF. В двоичном виде такое преобразование не производится.

Вы можете изменить установленный по умолчанию тип файла, задавая для _fmode значение t (текстовый) или b (двоичный) с помощью аргумента type в библиотечных подпрограммах fopen, fdopen и freopen. В подпрограмме open имеется также аргумент access, который может принимать как значение O_BINARY, так и значение O_TEXT. С помощью этого аргумента можно явно определять тип открываемого файла (сам файл определяется аргументом pathname подпрограммы open) - текстовый либо двоичный.

 

 

-----------------------------------------------------------------

_heaplen

-----------------------------------------------------------------

Назначение Содержит длину "близкой" кучи.

Синтаксис extern unsigned _heaplen;

Объявлена в dos.h

Замечания _heaplen содержит размер "близкой" кучи в малых моделях данных (крохотной, малой и средней). В больших моделях (компактной, большой и максимальной) _heaplen не существует, т.к. в этих моделях нет "близкой" кучи.

В малой и средней моделях размер сегмента данных вычисляется следующим образом:

сегмент данных[малая, средняя] = глобальные данные + куча + стек,

где размер стека может быть установлен благодаря переменной _stklen.

Если _heaplen установлена в 0, программа выделяет 64К байт для сегмента данных, и эффективный размер кучи

64К - (глобальные данные + стек) байтов.

По умолчанию _heaplen равна нулю, поэтому вы получите 64К для сегмента данных, если сами не укажете значение _heaplen.

В крохотной модели все (включая программу) содержится в одном сегменте, поэтому формула для вычисления сегмента данных содержит программу и 256 байтов для PSP (префикса сегмента программы):

сегмент данных[крохотная] = 256 + программа + + глобальные данные + куча + стек.

Если _heaplen равна 0 в крохотной модели, эффективный размер кучи получается вычитанием PSP, программы, глобальных данных и стека из 64К.

В компактной и большой моделях нет "близкой" кучи, поэтому сегмент данных просто равен -

сегмент данных[компактная, большая] = глобальные данные + стек.

В максимальной модели стек является отдельным сегментом и каждый модуль имеет свой собственный сегмент данных.

 

 

-----------------------------------------------------------------

_osmajor, _osminor

-----------------------------------------------------------------

Назначение Содержат главный и дополнительный номера версии DOS.

Синтаксис extern unsigned char _osmajor; extern unsigned char _osminor;

 

Обьявлены в dos.h

Замечания Главный и дополнительный номера версии DOS доступны по отдельности через переменные _osmajor и _osminor, где _osmajor - главный номер версии, а _osminor - дополнительный. Например, если вы используете DOS версии 3.2, то _osmajor будет равна 3, а _osminor - 20.

Эти переменные могут быть использованы, когда вы пожелаете написать программу, которая будет выполнятся под управлением DOS версий 2.x и

3.x. Некоторые библиотечные подпрограммы будут иметь отличительную зависимость от номера версии DOS, другие же работают только под управлением DOS версии 3.x. (См., например, _open, creatnew и ioctl в справочном разделе этого руководства.)

 

 

-----------------------------------------------------------------

_psp

-----------------------------------------------------------------

Синтаксис extern unsigned int _psp;

Объявлена в stdlib.h

Замечания _psp содержит адресный сегмент префикса сегмента программы (PSP) для выполняемой в данный момент программы. PSP является дескриптором процесса в DOS, он содержит начальную информацию DOS о программе (процессе).

Для получения более полной информации о PSP обратитесь к "Руководству Программиста MS-DOS" фирмы Microsoft.

 

 

-----------------------------------------------------------------

_stklen

-----------------------------------------------------------------

Назначение Содержит размер стека.

Синтаксис extern unsigned _stklen;

Объявлена в dos.h

Замечания _stklen специфицирует размер стека для всех шести моделей памяти. Минимальный размер стека - 128 слов. Если вы задатите меньшую величину, _stklen автоматически установится на свой минимум. По умолчанию размер стека - 4К.

В малой и средней моделях размер сегмента данных вычисляется следующим образом:

сегмент данных[малая, средняя] = глобальные данные + куча + стек,

где размер кучи может быть установлен благодаря переменной _heaplen.

В крохотной модели все (включая программу) располагается в одном сегменте, поэтому вычисление сегмента данных включает размер программы и 256 байт PSP (префикса сегмента программы).

сегмент данных[крохотная] = 256 + программа + + глобальные данные + куча + стек.

В компактной и большой моделях нет "близкой" кучи, поэтому сегмент данных просто равен -

сегмент данных[компактная, большая] = глобальные данные + стек.

В максимальной модели стек является отдельным сегментом и каждый модуль имеет свой собственный сегмент данных.

 

См. также _heaplen

 

 

-----------------------------------------------------------------

Timezone

-----------------------------------------------------------------

Назначение Содержит разницу в секундах между местным временем и Главным Гринвическим (GMT).

Синтаксис extern long timezone;

Объявлена в time.h

Замечания timezone используется функциями обработки времени и даты.

Эта переменная вычисляется функцией tzset; она принимает значение, равное разнице в секундах между местным временем и Главным Гринвическим временем.

 

 

-----------------------------------------------------------------

Tzname

-----------------------------------------------------------------

Назначение Массив указателей на имена временных зон.

Синтаксис extern char *tzname[2];

Объявлена в time.h

Замечания Глобальная переменная tzname - массив указателей на строки, содержащие сокращения для имен временных зон. tzname[0] указывает на трехсимвольную строку со значением имени временной зоны из строки среды TZ. Глобальная переменная tzname[1] указывает на трехсимвольную строку со значением имени зоны с летним временем из строки среды TZ. Если летнее время не используется, tzname[1] указывает на нулевую строку.

 

 

-----------------------------------------------------------------

_version

-----------------------------------------------------------------

Назначение Содержит номер версии DOS.

Синтаксис extern unsigned int _version;

Обьявлена в dos.h

Замечания _version содержит номер версии DOS; в младшем байте находится главное значение номера, а в старшем - дополнительное. (Для DOS версии x,y x является главным значением номера, а y - дополнительным.)

 

 

Функции с++.

 

----------------------------------------------------------------

Abort

----------------------------------------------------------------

 

Назначение Экстренное завершение процесса

 

Синтаксис void abort (void)

 

Прототип в stdlib.h

process.h

 

Замечания abort функция записывает сообщение о завершении

(abnormal program termination) в stderr и за-

вершает программу через обращение к функции

_exit, с кодом возврата 3.

 

Возвращаемое Эта функция возвращает код возврата 3 в

значение породивший ее процесс или непосредственно в

среду DOS.

 

Переносимость Доступна в системе UNIX и совместима с ANSI Си.

 

Смотри также assert, atexit, exit, _exit, raise, signal,

spawn...

 

-----------------------------------------------------------------

Abs

-----------------------------------------------------------------

 

Назначение Вычисляет абсолютное значение аргумента.

 

Синтаксис #include<math.h>

int abs(int i);

 

Прототип в stdlib.h, math.h

 

Замечания abs возвращает абсолютное значение целочислен-

ного аргумента i. Если обращение к abs происхо-

дит при включенном файле stdlib.h, то abs трак-

туется как макрос, расширяемый в машинные коды.

 

Если вы хотите использовать функцию abs вместо

макроса, то включите в программу строку

 

#undef abs

 

перед #include<stdlib.h>.

 

Возвращаемое abs возвращает целое в диапазоне от 0 до 32767

значение за исключением аргумента -32768, который возв-

ращается как -32768.

 

Переносимость Доступна в операционной системе UNIX и совмес-

тима с ANSI Си.

 

Смотри также cabs, fabs, labs

 

----------------------------------------------------------------

Absread

----------------------------------------------------------------

 

Назначение Непосредственный доступ к данным.

 

Синтаксис int absread (int drive, int nsects, int

sectno, void *buffer);

 

Прототип в dos.h

 

Замечания absread читает заданные секторы диска.

Она игнорирует логическую структуру диска и не

обращает внимания на файлы, таблицы размещения

файлов (FAT) и каталоги.

 

absread читает заданные секторы диска с помощью

прерывания DOS 0х25.

 

drive = номер дисковода (0=А,1=В...)

nsects = количество секторов для записи

sectno = начальный номер логического сектора

buffer = адрес памяти, куда будут считываться

данные с диска.

 

Число считываемых секторов ограничено памятью

сегмента buffer. Таким образом 64К - наибольшая

память, которая может быть использована за один

вызов absread.

 

Возвращаемое При успешном завершении функция возвращает 0.

значение При ошибке функция возвращает -1 и устанавлива-

ет errno в значение, равное AX, которое возвра-

щается системным вызовом. Описание errno смот-

рите в документации по MS-DOS.

 

Переносимость Уникальна для MS-DOS.

 

Смотри также absWrite, biosdisk

 

-----------------------------------------------------------------

Abswrite

-----------------------------------------------------------------

 

Назначение Запись данных.

 

Синтаксис int abswrite (int drive,int nsects,int sectno,

void *buffer)

 

Прототип в dos.h

 

Замечания abswrite записывает данные в указанные секторы

диска. Она игнорирует логическую структуру дис-

ка и не обращает внимания на файлы, таблицы

размещения файлов (FAT) и каталоги.

 

Замечание: в случае некорректного использования

данной функции информация в существующих фай-

лах, оглавлениях и каталогах может быть испор-

чена.

 

abswrite записывает заданные секторы с помощью

прерывания DOS 0х26.

 

drive = номер дисковода (0=А,1=В...)

nsects = количество записываемых секторов

sectno = начальный номер логического сектора

buffer = адрес памяти, куда будут записывать-

ся данные с диска.

 

Число считываемых секторов ограничено памятью

сегмента buffer. Таким образом 64К - наибольшая

память, которая может быть использована за один

вызов abswrite.

 

Возвращаемое При успешном завершении функция возвращает 0.

значение При ошибке функция возвращает -1 и устанавлива-

ет errno в значение, равное AX, которое возвра-

щается системным вызовом. Описание errno смот-

рите в документации по MS-DOS.

 

Переносимость Уникальна для MS-DOS.

 

Смотри также absread, biosdisk

 

-----------------------------------------------------------------

Access

-----------------------------------------------------------------

 

Назначение Определяет доступнорсть файла.

 

Синтаксис int access(const char*filename,int amode);

 

Прототип в io.h

 

Замечания access выполняет проверку на наличие файла, оп-

ределенного строкой filename и определяет пол-

номочия по доступу к нему (чтение, запись, вы-

полнение).

 

Параметр amode может принимать значения:

 

06 контроль разрешения чтения/записи

04 контроль разрешения чтения

02 контроль разрешения записи

01 выполнение (игнорируется)

00 контроль существования файла

 

Замечание: в среде MS-DOS, все существующие

файлы считаются доступными для чтения

(amode=04), поэтому обращение к access со зна-

чением amode 00 и 04 дают одинаковый результат.

По той же причине значение amode 02 эквивалент-

но 06, т.к., в среде MS-DOS, доступность файла

для записи подразумевает доступность его и для

чтения.

 

Если значением filename является имя каталога,

то функция access просто определяет имеется ли

каталог с таким именем или нет.

 

Возвращаемое Если доступ разрешен, то возвращается 0, в

значение противном случае возвращается -1 и errno уста-

навливается в одно из следующих состояний:

 

ENOENT Маршрут или имя файла не найдено

 

EACCES Доступ запрещен.

 

Переносимость Доступна в UNIX.

 

Смотри также chmod, fstat, stat

 

Пример

#include<stdio.h>

#include<io.h>

 

/* возвращает 1 если filename существует, иначе 0 */

 

int file_exists(char *filename)

{

return (access(filename, 0) == 0);

}

 

main()

{

printf("Есть доступ к NOTEXIST.FIL : %s\n",

file_exists("NOTEXIST.FIL") ? "ДА" : "НЕТ");

}

 

 

Результаты работы программы:

 

Есть доступ к NOTEXITS.FIL : НЕТ

 

-----------------------------------------------------------------

Acos

-----------------------------------------------------------------

 

Назначение Вычисление арккосинуса.

 

Синтаксис #include<math.h>

double acos(double x);

 

Прототип в math.h

 

Замечания Функция возвращает арккосинус входного

параметра. Аргумент функции должен иметь значе-

ние в диапазоне от -1 до 1. Если аргумент выхо-

дит за указанные границы, функция acos возвра-

щает значение 0 и устанавливает значение

переменной errno, в

 

EDOM аргумент не входит в область

определения функции.

 

Возвращаемое acos возврашает значение в диапазоне от 0 до

значение pi.

 

Обработчик ошибок для этой функции может быть

модифицирован с помощью функции matherr.

 

Переносимость Функция доступна в системах типа UNIX и совмес-

тима с ANSI Си.

 

Смотри также asin, atan, atan2, cos, cosh, matherr, sin,

sinh, tan, tanh

 

----------------------------------------------------------------

Allocmem

----------------------------------------------------------------

 

Назначение Выделяет сегмент памяти DOS.

 

Синтаксис int allocmem(unsigned size, unsigned *segp);

 

Прототип в dos.h

 

Замечания allocmem, используя системный вызов MS-DOS

0x48, выделяет блок свободной памяти и возвра-

щает адрес сегмента этого блока.

 

size - требуемый размер в параграфах (размер

параграфа равен 16 байтам). segp - указатель на

слово, в которое занесется адрес сегмента выде-

ляемого блока. По адресу segp не будет присвое-

но кокое-либо значение в случае недостатка сво-

бодной памяти.

 

Все выделяемые блоки выравнены по параграфам.

 

Возвращаемое При успешном завершении allocmem возвращает -1.

значение В случае ошибки возвращается число (размер

максимально доступного блока памяти). При этом

значения переменной _doserrno и глобальной

переменной errno устанавливаются в

 

ENOMEM Недостаточно памяти.

 

Переносимость Уникальна для МS-DOS.

 

Смотри также coreleft, freemem, malloc, setblock

 

-----------------------------------------------------------------

Arc

-----------------------------------------------------------------

 

Назначение Рисует круговую дугу.

 

Синтаксис #include<graphiсs>

void far arc (int x, int y, int stangle,

int endangle, int radius);

 

Прототип в graphics.h

 

Замечания arc чертит круговую дугу текущего цвета рисова-

ния с центром в (x,y) и радиусом, заданным в

radius. arc чертит от stangle до endangle. Если

stangle=0, а endangle =360, то вызов arc приво-

дит к вычерчиванию полной окружности.

 

Угол для arc формируются против часовой стрел-

ки. При этом 0 градусов соответствует 3 часам,

90 градусов соответствуют 12 часам и т.д.

 

Замечание: при вычерчивании дуги, окружности,

эллипса и сектора для определения типа линии

используется параметр thickness а не linestyle.

 

Замечание: при использовании графического адап-

тера CGA или монохромного адаптера приведенные

в данном материале примеры могут не привести к

ожидаемому результату. Это объясняется тем, что

вам необходимо передать значение 1 графическим

функциям (например, setcolor, setfillstyle,

setlinestyle), которые изменяют цвет наполнения

(закрашивания) и рисования, вместо соответству-

ющей символьной константы цвета (определена в

grafics.h). Второй пример в данном разделе ил-

люстрирует построение графиков в случае исполь-

зования адаптеров CGA или монохромного адапте-

ра.

 

Возвращаемое Нет.

Значение

 

Переносимость Данная функция работает только на IBM PC и

совместимых моделях при наличии соответствующих

графических адаптеров.

 

Смотри также circle, ellipse, fillellipse, getarccoords,

sector

 

Пример 1 Синтаксис графических функций для адаптеров

EGA и VGA.

 

 

#inсlude<graphics.h>

#inсlude<conio.h>

 

main ()

{

int graphdriver = DETECT, graphmode; /* требование

автоопределения */

 

struct arccoordstype arcinfo;

int xasp, yasp;

long xlong;

 

initgraph(&graphdriver, &graphmode, " "); /* инициали-

зация графики */

/* Начертить дугу в 90 градусов с радиусом 50 */

arc(150, 150,0,89,50);

 

/* Получить координаты дуги и соединить концы */

getarccoords (&arcinfo);

line(arcinfo.xstart, arcinfo.ystart, arcinfo.xend,

arcinfo.yend);

 

/* Нарисовать окружность */

circle(150,150,100);

 

/* Нарисовать эллипс внутри окружности */

ellips(150,150,0,359,100,50);

 

/* Нарисовать и заполнить круговой сектор */

setcolor(WHITE); /* белый рисунок */

setfillstyle(SOLID_FILL, LIGHTRED);

pieslice(100,100,0,134,49);

setfillstyle(SOLID_FILL, LIGHTBLUE);

pieslice(100,100,135,225,49);

setfillstyle(SOLID_FILL, WHITE);

pieslice(100,100,225,360,49);

 

/* Начертить "квадратный" прямоугольник */

getaspectratio(&xasp, &yasp);

xlong = (100L*(long)yasp)/(long)xasp;

rectangle(0,0, (int)xlong, 100);

getch();

closegraph();

}

 

 

Пример 2 Синтаксис графических функций для адаптеров

CGA и монохромного адаптера.

 

#inсlude<graphics.h>

#inсlude<conio.h>

 

main ()

{

int graphdriver = DETECT, graphmode; /* требование

автоопределения */

 

struct arccoordstype arcinfo;

int xasp, yasp;

long xlong;

 

initgraph(&graphdriver, &graphmode, " "); /* инициали-

зация графики */

/* Начертить углы в 90 градусов с радиусом 50 */

arc(150, 150,0,89,50);

 

/* Получить координаты дуги и соединить концы */

getarccoords (&arcinfo);

line(arcinfo.xstart, arcinfo.ystart, arcinfo.xend,

arcinfo.yend);

 

/* Нарисовать окружность */

circle(150,150,100);

 

/* Нарисовать эллипс внутри окружности */

ellips(150,150,0,359.100,50);

 

/* Нарисовать и заполнить круговой сектор */

setfillstyle(HATCH_FILL, 1);

pieslice(100,100,0,134,49);

setfillstyle(SLASH_FILL, 1);

pieslice(100,100,135,225,49);

setfillstyle(WIDE_DOT, 1);

pieslice(100,100,225,360,49);

 

/* Начертить "квадратный" прямоугольник */

getaspectratio(&xasp, &yasp);

xlong = (100L*(long)yasp)/(long)xasp;

rectangle(0,0, (int)xlong, 100);

getch();

closegraph();

}

 

-----------------------------------------------------------------

Asctime

-----------------------------------------------------------------

 

Назначение Преобразует date и time в формат ASCII.

 

Синтаксис #include<time.h>

char *asctime(struct tm *tm);

 

Прототип в time.h

 

Замечания asctime - преобразует время, хранимое в виде

структуры, в 26-символьную строку той

же формы, что и функция ctime:

 

Sun Oct 05 01:03:52 1963\n\0

 

Возвращаемое asctime возвращает указатель на строку,

значение содержащую дату и время. Эта строка является

статической переменной и переписывается при

каждом вызове.

 

Переносимость Функция доступна в системах UNIX и совместима с

ANSI Си.

 

Смотри также ctime, difftime, ftime,gmtime, localtime,

stime, time, tzset

 

Пример

#include<stdio.h>

#include<time.h>

 

main ()

{

stuct tm *tm_now;

time_t secs_now;

char *str_now;

 

time(&secs_now); /* в секундах */

str_now = ctime(&secs_now); /* сделать

строкой */

 

printf("Число секунд с 1 января 1970 г. = "

" %ld\n", secs_now);

printf("Другими словами, сейчас %s\n",

str_now);

 

tm_now = localtime(&secs_now); /* сделать

структуру */

printf("По структуре: %d %02d-%02d-%02d "

" %02d:%02d.%02d\n",

tm_now->tm_yday, tm_now->tm_mon,

tm_now->tm_mday, tm_now->tm_year,

tm_now->tm_hour, tm_now->tm_min,

tm_now->tm_sec);

 

/* от структуры к строке */

str_now = asctime(tm_now);

printf(Еще раз, сейчас %s\n", str_now);

}

 

Результат выполнения программы

 

Число секунд с 1 января 1970 г. = 315594553

Другими словами, сейчас Tue Jan 01 12:09:13 1980

 

По структуре: 0 00-01-80 12:09:13

Еще раз, сейчас Tue Jan 01 12:09:13 1980

 

-----------------------------------------------------------------

Asin

-----------------------------------------------------------------

 

Назначение Вычисление арксинуса.

 

Синтаксис #include<math.h>

double asin(double x);

 

Прототип в math.h

 

Замечания Функция возвращает арксинус входного параметра.

Аргумент функции должен иметь значение в диапа-

зоне от -1 до 1. Если аргумент выходит за ука-

занные границы, функция asin возвращает значе-

ние 0 и устанавливает значение переменной errno

в

 

EDOM аргумент не входит в область

определения функции.

 

Возвращаемое asin возврашает значение в диапазоне от 0 до

значение pi.

 

Обработчик ошибок для этой функции может быть

модифицирован с помощью функции matherr.

 

Переносимость Функция доступна в системах типа UNIX и совмес-

тима с ANSI Си.

 

Смотри также acos, atan, atan2, cos, cosh, matherr, sin,

sinh, tan, tanh

 

-----------------------------------------------------------------

Assert

-----------------------------------------------------------------

 

Назначение Проверяет условия и завершение, при необходимо-

сти, программы.

 

Синтаксис #include<assert.h>

#include<stdio.h>

void assert (int test);

 

Прототип в assert.h

 

Замечания assert представляет собой макрос, расширяемый

в оператор if; если выражение test в полученном

расширении ложно, то assert печатает сообщение

и прекращает выполнение программы (через обра-

щение к abort).

 

Сообщение, которое распечатывает assert, имеет

вид:

 

Assertion failed:<условие>, file<имя-файла>,

line<номер строки>

 

<имя файла> и <номер строки>, используемые в

этом сообщении, представляет собой имя исходно-

го файла и номер строки, в которой находится

макрос assert.

 

Если же в исходном тексте перед директивой

#include<assert.h> вы поместили директиву

#define NDEBUG ("не отладка"), то работа опера-

тора assert отменяется.

 

Возвращаемое Нет.

Значение

 

Совместимость Данный макрос доступен на некоторых UNIX - сис-

темах, включая System III и V, а также совмес-

тим с ANSI Си.

 

Смотри также abort

 

Пример

/* ASSERT.C: добавляет один элемент в список,

проверяя затем, чтобы он не был равен NULL */

 

#include<assert.h>

#include<stdio.h>

struct ITEM {

int key;

int value;

};

 

void additem (struct ITEM *itemptr)

{

assert (itemptr !=NULL);

/* это строка 13 */

/* ...добавить элемент... */

}

 

main ()

{

additem (NULL);

}

 

 

Результат выполнения программы

Assertion failed:itemptr !=NULL, file C:

\TURBOC\ASSERT.C, line 13

 

----------------------------------------------------------------

Atan

----------------------------------------------------------------

 

Назначение Вычисление арктангенса.

 

Синтаксис #include<math.h>

double atan(double x);

 

Прототип в math.h

 

Замечания Функция возвращает арктангенс входного

параметра.

 

Возвращаемое atan возврашает значение в диапазоне от -pi/2

значение до pi/2.

 

Обработчик ошибок для этой функции может быть

модифицирован с помощью функции matherr.

 

Переносимость Функция доступна в системах типа UNIX и совмес-

тима с ANSI Си.

 

Смотри также acos, asin, atan2, cos, cosh, matherr, sin,

sinh, tan, tanh

 

----------------------------------------------------------------

Atan2

----------------------------------------------------------------

 

Назначение Вычисление арктангенса y/x.

 

Синтаксис #include<math.h>

double atan2(double y, double x);

 

Прототип в math.h

 

Замечания Функция возвращает арктангенс значения y/x и

позволяет получить более точный результат (чем



Последнее изменение этой страницы: 2016-12-12; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 100.26.179.251 (0.157 с.)