Описание функций Си

если при загрузке обнаруживается сопроцессор

_8087

Функция Флаг состояния сопроцессора.

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

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

Описание Переменная _8087 устанавливается в нену- левое значение (1, 2 или 3), если при загрузке обнаруживается сопроцессор с плавающей точкой (8087, 80287 или 80387 соответственно). Иначе пе- ременная устанавливается в 0. Эта проверка может быть заменена на установку переменной окружения в YES или NO. (Команды SET 87=YES или SET 87=NO; пробелов в знаке равенства быть не должно). В этом случае переменная _8087 установится в 1 или 0. Более подробная информация об этой переменной содержится в Главе 4 Руководства программиста "Модели памяти, операции с плавающей точкой и оверлеи.

_Argc

_argc
Функция Содержит количество аргументов командной строки.
Синтаксис extern int _argc;
Объявлено в dos.h
Описание _argc имеет значение argc, передаваемое функ- ции main при запуске программы.

_Argv

_argv
Функция Массив указателей на аргументы командной строки.
Синтаксис extern char * _argv[];
Объявлено в dos.h
Описание _argv указывает на массив, содержащий аргу- менты командной строки (элементы argv[]), переда- ваемые функции main при запуске программы.

_Chmod

_chmod
Функция Изменяет режим доступа к файлу.
Синтаксис #include
#include
int _chmod(const char * path, int func[,int attrib]);
Файл, содержащий io.h прототип
Описание Функция _chmod может изменять или устанавливать атрибуты файлов DOS. Если func равен 0, то функ- ция возвращает текущие атрибуты DOS для данного файла. Если func равен 1, то атрибуты устанавли- ваются в сооответствии с аргументом attrib.
attrib может быть одной из следующих символьных константных значений (определенных в dos.h):
FA_RDONLY только чтение FA_HIDDEN скрытый файл FA_SYSTEM системный файл FA_LABEL метка тома FA_DIREC директория FA_ARCH архив
Возвращаемое При успешном завершении _chmod возвращает слово с значение атрибутами файла; иначе, возвращается значение -1.
В случае ошибки errno присваивается одно из сле- дующих значений:
ENOENT - Маршрут или имя файла не найдены EACCES - Отказ доступа
Переносимость _chmod уникальна для DOS.
Смотрите также
Пример:
#include
#include
#include
#include
int get_file_attrib(char *filename);
int main(void); { char filename[128]; int attrib; printf("Введите имя файла:"); scanf("%s",filename); attrib = get_file_attrib(filename); if(attrib == -1) switch(errno) { case ENOENT:printf("Маршрут или имя файла не найдены\n"); break; case EACCES:printf("Отказ доступа\n"); break; default: printf("Ошибка номер %d\n",errno); break; } else { if(attrib & FA_RDONLY) printf("%s имеет атрибут только на чтение\n",filename); if(attrib & FA_HIDDEN) printf("%s - cкрытый файл\n",filename); if(attrib & FA_SYSTEM) printf("%s - системный файл \n",filename); if(attrib & FA_LABEL) printf("%s - метка тома\n",filename); if(attrib & FA_DIREC) printf("%s - директория\n",filename); if(attrib & FA_ARCH) printf("%s - архивный файл\n",filename); } return 0; } /* возвращает атрибуты файла */ int get_file_attrib(char *filename) { return(_chmod(filename,0)); }

_clear87

Функция Очищает слово состояния операций с плавающей точ- кой.

Синтаксис #include

insigned int _clear87(void);

Файл, содержащий float.h прототип

Описание Функция _clear87 очищает слово состояния операций с плавающей точкой, которое является комбинацией слова состояния сопроцессора 8087/80287 и других условий, обнаруженных программой обработки исклю- чительных ситуаций сопроцессора 8087/80287.

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

Смотрите также 7, 7.

Пример:

#include

#include

int main(void) { float x; double y=1.5e-100; printf("Состояние 8087 перед ошибкой: %X\n",_status87()); x = y; /* создание состояния переполнения и потери точности */ printf("Состояние 8087 после ошибки: %X\n",_status87()); _clear87(); printf("Состояние 8087 после обнуления: %X\n",_status87()); return 0; }

_Close

_close
Функция Закрывает файл.
Синтаксис #include
int _close(int handle);
Файл, содержащий io.h прототип
Описание _close закрывает файл, связанный с дескриптором handle. Аргумент handle обозначает дескриптор файла, присваиваемый ему при вызове функций _creat, creat, creatnew, creattemp, dup, dup2, _open или open.
Примечание. Эта функция не записывает символ Ctrl-Z в конец файла. Если вы хотите завершить файл этим символом, его следует явно вывести.
Возвращаемое При успешном завершении _close значение возвращает значение 0. Иначе возвращается значе- ние -1.
Если аргумент handle не является дескриптором от- крытого файла, это приводит к неудачному заверше- нию операции. errno получает следующее значение:
EBADF - Неверный номер файла.
Переносимость _close уникальна для DOS.
Смотрите также
Пример:
#include
#include
#include
int main(void) { int handle; char buf[11] = "0123456789"; /* создать файл содержащий 10 байт */ handle = open("DUMMY.FIL",O_CREAT); write(handle,buf,strlen(buf)); /* закрыть файл */ _close(handle); return 0; }

_Control

_control87
Функция Манипулирует словом управления операций с плавающей точкой.
Синтаксис #include
unsigned int _control87(unsigned int newcw, unsigned int mask);
Файл, содержащий float.h прототип
Описание _control87 извлекает и изменяет слово управления операциями с плавающей точкой.
Слово управления плавающей точки имеет тип unsigned int, в котором бит за битом перечислены режимы операций с плавающей точкой, а именно: ре- жимы точности, бесконечности и округления. Изме- нение этих режимов позволяет маскировать исключи- тельные состояния операций с плавающей точкой.
_control87 сравнивает биты в mask с битами в newcw. Если бит в mask равен 1, то соответствую- щий бит в new содержит новое значение для такого же бита в слове управления операций с плавающей точкой, а _control87 устанавливает этот бит в слове управления в новое значение.
Пример:
Исходное слово управления: 0100 0011 0110 0011 mask 1000 0001 0100 1111 newcw 1110 1001 0000 0101 Изменяющиеся биты 1xxx xxx1 x0xx 0101
Если mask равен 0, то _control87 возвращает слово управления операциями с плавающей точкой без из- менения.
_control87 не изменяет бит Denormal, поскольку Turbo C++ использует ненормальную обработку иск- лючительных ситуаций.
Возвращаемое Биты в возвращаемом значении представляют собой значение новое слово управления операциями с плавающей точ- кой. Полное описание битов, возвращаемых функцией _control87, приведено в в файле заголовка float.h.
Переносимость _control87 уникальна для DOS.
Смотрите также 7, 7.
Пример: /* маскирование исключительных ситуаций вычисле- ний с плавающей точкой */ _control87(MCW_EM,MCW_EM);

_Creat

_creat
Функция Создает новый файл или перезаписывает существующий.
Синтаксис #include
int _creat(const char * path, int attrib);
Файл, содержащий io.h прототип
Описание _creat берет аргумент attrib - слово атрибутов DOS. Файл всегда открывается в двоичном режиме. При успешном создании файла указатель файла уста- навливается на начало этого файла. Файл открыва- ется сразу для чтения и записи.
Если файл уже существует, то его размер устанав- ливается равным 0. (Это эквивалентно удалению файла и созданию нового файла с этим же именем).
Аргумент attrib в _creat может быть одной из сле- дующих констант (определенных в dos.h):
FA_DRONLY Только чтение FA_HIDDEN Скрытый файл FA_SYSTEM Системный файл
Возвращаемое При успешном завершении _creat возвращает дескрип- значение тор нового файла, неотрицательное число; иначе воз- вращается -1.
В случае ошибки errno принимает одно из следующих значений:
ENOENT - Маршрут или имя файла не найдены EMFILE - Слишком много открытых файлов EACCES - Отказ доступа
Переносимость _creat уникальна для DOS.
Смотрите также
Пример:
#include
#include
#include
#include
#include
#include
#include
int main(void) { int handle; char buf[] = "0123456789"; /* создать файл для чтения и записи в двоичном режиме */ if((handle = _creat("DUMMY.FIL",0)) < 0) { switch(errno) { case ENOENT: printf("Ошибка:Маршрут или имя файла не найдены.\n"); break; case EMFILE: printf("Ошибка:Слишком много открытых файлов.\n"); break; case EACCES: printf("Ошибка: Отказ доступа\n"); break; default: printf("Ошибка при создании файла\n"); break; } exit(1); } /* записать в файл строку с завершающим нулевым символом */ write(handle,buf,strlen(buf)+1); /* закрыть файл */ close(handle); return 0; }

_Ctype

_ctype
Функция Массив атрибутов символа.
Синтаксис extern char _ctype[];
Объявлено в ctype.h
Описание _ctype.h является массивом атрибутов символа, индексируемого по значению ASCII + 1. Каждый эле- мент является набором бит, описывающих символ.

__Emit__

__emit__
Функция Вставляет значение литерала непосредственно в код.
Синтаксис #include
void __emit__(argument,...);
Файл, содержащий dos.h прототип
Описание Функция __emit__ позволяет вам вставить значение литерала непосредственно в объектный код, как если бы он был откомпилирован. Она используется для ге- нерирования машинных инструкций без использования встроенных операторов ассемблера.
Обычно аргументы __emit__ вызывают однобайтовые машинные команды. Однако возможности данной функ- ции позволяют строить более сложные команды, вплоть до ссылок на переменные Си.
Предупреждение! Этой функцией могут воспользовать- ся только программисты, хорошо ориентирующиеся в машинном языке процессоров семейства 80х86. Вы мо- жете использовать данную функцию для помещения произвольных байтов в машинный код функции. Если эти байты будут неправильными, то это может при- вести к неисправимой ошибке. Turbo C++ не анализи- рует код, помещаемый таким образом. Если эти ма- шинные команды изменяют значение регистров или пе- ременных, то Turbo C++ не знает об этом и не сох- раняет их перед использованием данного кода, как он делает это при работе со встроенным ассембле- ром, где он, например, распознает использование регистров SI и DI и сохраняет их. Здесь же вы пре- доставлены сами себе.
Вы должны передать __emit__ по меньшей мере 1 ар- гумент; реальное число может быть больше. Аргумен- ты этой функции рассматриваются не так, как других функций: никаких преобразований они не претерпева- ют.
Имеется специальное ограничение формы аргументов __emit__. Они должны иметь форму константных выра- женй, т.е. чтобы их можно было использовать для инициализации статических объектов. Это означает, что в выражениях можно использовать целые констан- ты, константы с плавающей точкой и адреса стати- ческих объектов. Значение записывается в точке вы- зова функции также, как если они используются для инициализации данных. Можно также использовать ад- реса параметров и автоматических переменных, плюс или минус константное смещение. Для этих аргумен- тов запоминается смещение переменной в BP.

Количество байт, помещаемых в объектный код, опре- деляется типом аргумента, за исключением следующих случаев:

- знаковая целая константа (например 0х90) значе- ние которой лежит в диапазоне от 0 до 255 рассмат- ривается как символ.

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

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

__emit__(0x90);

Если вы хотите записать слово, однако его значение меньше 255, то просто преобразуйте его в unsigned:

__emit__(0xB8,(unsigned)17);

или

__emit__(0xB8, 17u);

Двух- или четырехбайтовые адреса можно прямо ука- зать с помощью типов: void near * и void far *, соответственно.

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

Переносимость __emit__ уникальна для семейства машин 80х86.

Пример:

#include

int main() { /* вставить код, который генерирует печать экрана, через прерывание int 5 */ __emit__(0xcd,0x05); /* INT 05h */ return 0; }

_Exit

_exit
Функция Прекращает выполнение программы.
Синтаксис #include
void _exit(int status);
Файл, содержащий process.h, stdlib.h прототип
Описание Функция _exit заканчивает процесс без закрытия ка- ких-либо файлов, сохранения какого-либо вывода, вызова каких-либо "функций выхода".
В любом случае, для вызываемого процесса обеспечи- вается аргумент status, который представляет собой статус выхода для данного процесса. Обычно значе- ние, равное нулю, используется для обозначения нормального выхода из процесса,а ненулевое значе- ние обозначает какие-либо ошибки.
Возвращаемое Нет. значение
Переносимость _exit доступна в системе UNIX.
Смотри также .., ..
Пример:
#include
#include
void dose(void);
int main(void) { atexit(dose); _exit(0); return 0; } void dose() { printf("Привет\n"); }

_Fmode

_fmode
Функция Режим преобразования файла по умолчанию.
Синтаксис extern int _fmode;
Объявлено в fcntl.h
Описание Данная переменная определяет, в каком режиме (текстовом или двоичном), файлы будут открываться и преобразовываться. По умолчанию, значением _fmode является O_TEXT, что означает, что файлы будут читаться в текстовом режиме. Если же _fmode получит значение O_BINARY, файлы будут открыты и прочитаны в двоичном режиме. (O_TEXT и O_BINARY определены в файле fcntl.h).
В текстовом режиме, при вводе, комбинация возврат каретки/перевод строки (CR/LF) преобразуется в один символ перевода строки (LF). При выводе, преобразование обратное - символы LF преобразуют- ся в комбинацию CR/LF. В двоичном режиме такое преобразование не произ- водятся. Вы можете изменить режим по умолчанию, устанавли- ваемый в _fmode, если для библиотечных функций fopen, fdopen, frеopen вы определите аргумент type, равный t (для текстового режима) или b (для двоичного режима). Также, аргумент access функции open может содержать либо O_BINARY, либо O_TEXT, который явно определяет режим (текстовый или дво- ичный) открытия файла (он определяется аргументом pathname функции open).

_Fpreset

_fpreset
Функция Выполняет рестарт математического пакета операций с плавающей точкой.
Синтаксис #include
void _fpreset();
Файл, содержащий float.h прототип
Описание Функция _fpreset выполняет рестарт математического пакета операций с плавающей точкой. Данная функ- ция обычно используется вместе с функциями signal, system, или функциями exec... или spawn...
Примечание. При работе под операционной системой DOS, если в программе используется математический сопроцессор 80x87, "дочерний" процесс (выполняе- мый посредством функций system, exec... или spawn...), может изменить состояние операций с плавающей точкой "родительского" процесса.
Если вы используете сопроцессор 80x87, примите следующие предосторожности:
- Не вызывайте функции exec..., spawn... или system, пока выражение с плавающей точкой не вы- числено.
- Для установки операций с плавающей точкой после использования функций system, exec... или spawn... вызывайте функцию _fpreset (если только есть какой-либо шанс выполнения дочерним процес- сом операций с плавающей точкой, посредством соп- роцессора 8087/80287).
Возвращаемое Отсутствует. значение
Смотрите также 7, 7, .., .., 7,
Пример:
#include
#include
#include
#include
#include
#include
jmp_buf reenter;
/* определим программу обработки ошибочных ситуаций операций с плавающей точкой */ void float_trap(int sig) { printf("Прерывание по ошибке операций с плавающей точкой.\n"); printf("Для продолжения работы нажмите любую клавишу...\n"); getch(); /* рестарт сопроцессора или эмулятора */ _fpreset(); /* вернутся в точку, в которой возникла ошибка */ longjmp(reenter,-1); } int main(void) { float one = 3.14, two = 0.0; /* установить программу обработки исключительных ситуаций операций с плавающей точкой */ if(signal(SIGFPE,float_trap) == SIG_ERR) { printf("Ошибка при установке программы обработки прерываний\n"); exit(3); } printf("Генерация математической ошибки. Нажмите клавишу...\n"); getch(); if(setjmp(reenter)==0) one /* two; printf("Возврат после обработки прерывания.\n"); return 0; }

_Graphfr

_graphfreemem
Функция Пользователь освобождает графическую память.
Синтаксис #include
void far _graphfreemem(void var *ptr,unssigned size);
Файл, содержащий graphics.h прототип
Описание Графическая библиотека вызывает _graphfreemem для освобождения памяти, ранее занятой с помощью _graphgetmem. Вы можете управлять распределением памяти графической библиотеки посредством просто- го определения вашей собственной версии _graphfreemem (вы должны определить ее так, как показано в описании). Начальная версия этой прг- раммы просто вызывает free.
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
#include
#define NONSENSE -50
int main(void) { /* Инициация ошибки */ int graphdriver = NONSENSE, gmode, errorcode; int midx,midy;
/* обнуление текстового экрана */ clrscr(); printf("Для инициализацмм графики нажмите любую клавишу..."); getch(); clrscr();
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult();
/* выдать соответствующее ошибке сообщение */ if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx()/2; midy = getmaxy()/2; /* вывести сообщение */ settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(midx,midy,"Для выхода из графического режима нажмите любую клавишу "); /* очистка */ getch(); closegraph(); return 0; } /* вызывается ядром графической системы для выделения памяти */ void far *far _graphgetmem(unsigned size) { printf("Вызвана _graphgetmem для выделения %d байт\n",size); printf("Нажмите любую клавишу:"); getch(); printf("\n"); /* выделить память */ return farmalloc(size); } /* вызывается ядром графической системы для освобождения памяти */ void far _graphfreemem(void far *ptr, unsigned size) { printf("Вызвана _graphfreemem для освобождения %d байт\n",size); printf("Нажмите любую клавишу:"); getch(); printf("\n"); /* освободить память */ return farfree(ptr); }

_Graphge

_graphgetmem
Функция Пользователь захватывает графическую память.
Синтаксис #include
void far _graphgetmem(unsigned size);
Файл, содержащий graphics.h прототип
Описание Графическая библиотека вызывает _graphgetmem (но не пользовательская программа) для выделения памяти для внутренних буферов, графических драй- веров и шрифтов. Вы можете управлять распределе- нием памяти графической библиотекой посредством простого определения вашей собственной версии _graphgetmem (вы должны определить ее так, как показано в описании). Начальная версия этой прг- раммы просто вызывает malloc.
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
#include
#define NONSENSE -50
int main(void) { /* Инициация ошибки */ int graphdriver = NONSENSE, gmode, errorcode; int midx,midy;
/* обнуление текстового экрана */ clrscr(); printf("Для инициализации графики нажмите любую клавишу..."); getch(); clrscr();
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult();
/* выдать соответствующее ошибке сообщение */ if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx()/2; midy = getmaxy()/2; /* вывести сообщение */ settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(midx,midy,"Для выхода из графического режима нажмите любую клавишу "); /* очистка */ getch(); closegraph(); return 0; } /* вызывается ядром графической системы для выделения памяти */ void far *far _graphgetmem(unsigned size) { printf("Вызвана _graphgetmem для выделения %d байт\n",size); printf("Нажмите любую клавишу:"); getch(); printf("\n"); /* выделить память */ return farmalloc(size); } /* вызывается ядром графической системы для освобождения памяти */ void far _graphfreemem(void far *ptr, unsigned size) { printf("Вызвана _graphfreemem для освобождения %d байт\n",size); printf("Нажмите любую клавишу:"); getch(); printf("\n"); /* освободить память */ return farfree(ptr); }

_Heaplen

_heaplen
Функция Содержит длину локального heap.
Синтаксис extern unsigned _heaplen;
Объявлено в dos.h
Описание _heaplen определяет размер локального heap в ма- лых моделях данных (tiny, small, mediuim). _heaplen не существует в больших моделях данных (compact, large, huge), т.к. они не имеют локаль- ного heap.
В моделях small и medium размер сегмента данных вычисляется следующим образом:
data segment [small,medium] = global data + heap + stack
где размер стека может быть получен по _stklen. Если _heaplen установлен в 0, то программа выде- ляет 64Кбайт для сегмента данных, и действитель- ный размер heap равен:
64К - (global data + stack) байт
По умолчанию _heaplen равен 0, так что вам выде- ляется сегмент данных 64К, пока вы не укажете другое значение _heaplen. В модели tiny все (включая код) находится в одном сегменте, поэтому в сегмент данных включается код и 256 байт для PSP.
data segment [tiny] = 256 + code + global data + heap + stack
Если _heaplen равен 0 в модели tiny, то действи- тельный размер heap получается вычитанием PSP, кода, глобальных данных и стека из 64К.
В моделях compact и large не существует локально- го heap, поэтому сегмент данных равен
data segment [compact,large] = global data + stack В модели huge стек является отдельным сегментом, а каждый модуль имеет собственный сегмент данных.
Смотрите также _

_Lrotl

_lrotl
Функция Циклический сдвиг влево длинного целого.
Синтаксис #include
unsigned long _lrotl(unsigned long val,int count);
Файл содержащий stdlib.h прототип
Описание _lrotl производит циклический сдвиг влево на count бит. val имеет тип unsigned long.
Возвращаемое _lrotl возвращает значение val сдвинутое значение влево на count бит.
Переносимость _lrotl уникальна для DOS.
Смотрите также
Пример:
#include
#include
int main(void) { unsigned long result; unsigned long value = 100; result = _lrotl(value,1); printf("Значение %lu сдвинутое влево на 1 бит равно %lu\n", value,result); return 0; }

_Lrotr

_lrotr
Функция Циклический сдвиг вправо длинного целого.
Синтакс #include
unsigned long_lrotr(unsigned long val, int count);
Файл содержащий stdlib.h прототип
Описание _lrotr производит циклический сдвиг вправо на count бит. val имеет тип unsigned long.
Возвращаемое _lrotr возвращает значение val сдвинутое значение влево на count бит.
Переносимость _rotl уникальна для DOS.
Смотрите также
Пример:
#include
#include
int main(void) { unsigned long result; unsigned long value = 100; result = _lrotr(value,1); printf("Значение %lu сдвинутое вправо на 1 бит равно %lu\n", value,result); return 0; }

_Open

_open
Функция открывает файл для чтения или записи.
Синтаксис #include
int _open(const char *filename, int oflags);
Файл, содержащий io.h прототип
Описание Функция _open открывает файл, имя которого опреде- лено параметром filename, и подготавливает его для для последующих операций чтения и/или записи, определяемых параметром oflags. Файл открывается в режиме, определяемом _fmode.
Для функции _open параметр oflags в DOS 2.x огра- ничивается тремя значениями: O_RDONLY, O_WRONLY O_RDWR. В DOS 3.x вводятся дополнительные значе- ния:
O_NOINHERIT - Включается, если файл не может быть передан дочерней программе.
O_DENYALL - Позволяет доступ к файлу только по текущему номеру handle.
O_DENYWRITE - Позволяет любому другому открытию файла только чтение.
O_DENYREAD - Позволяет любому другому открытию файла только запись.
O_DENYNONE - Разрешает разделенное открытие фай- ла.
Эти символические константы (O_...) определены в файле fcntl.h.
В единственный вызов функции open под версией DOS 3.x может быть включено только одно из значений O_DENYxxx. Эти атрибуты разделения доступа к фай- лу даны в дополнение к операциям блокировки.
Максимальное число одновременно открытых файлов задается, как параметр, при конфигурировании сис- темы.
Возвращаемое При успешном завершении _open возвращает целое значение неотрицательное число handle - логический номер открытого файла. Указатель файла (указатель теку- щей позиции) устанавливается на начало файла. При ошибке _open возвращает значение -1, и переменная errno получает одно из следующих значений:
ENOENT - Маршрут или имя файла не найдены; EMFILE - Слишком много открытых файлов; EACCES - Доступ запрещен; EINVACC - Неверный код доступа.
Переносимость Функция _open уникальна для DOS.
Смотрите также

_Openfd

_openfd
Функция Массив режимов доступа.
Синтаксис extern unsigned int _openfd[];
Объявлено в io.h
Описание _openfd является массивом режимов доступа для файлов и устройств.

_Osmajor

_osmajor,_osminor
Функция Содержит старший и младший номер версии DOS.
Синтаксис extern unsigned char _osmajor; extern unsigned char _osminor;
Объявлено в dos.h
Описание Старший и младший номер версии доступны при помощи переменных _osmajor и _osminor. _osmajor содержит номер версии, а _osminor - расширение. Например, если вы работаете с версией DOS 3.2, то _osmajor будет иметь значение 3, а _osminor - 20. Эти пе- ременные могут оказаться полезны, если вы захоти- те написать программы, функционирующие под управ- лением операционной системы MS-DOS версий 2.х и 3.х. Некоторые библиотечные функции работают по-разному в зависимости от номера версии DOS, в то время как другие работают только с версией DOS 3.х. (Например, посмотрите функции _open, creatnew, ioctl в справочной секции данного руко- водства).

_OvrlIni

_OvrlInitExt
Функция Инициализирует систему подкачки дополнительной памяти для администратора оверлеев.
Синтаксис #include
int cdecl far _OvrlInitExt(unsigned long startAddress, unsigned long length);
Файл, содержащий dos.h прототип
Описание _OvrlInitExt проверяет наличие дополнительной памяти, используя известные методы поиска других программ, также использующих дополнительную па- мять, и выделяет в ней память. Если параметр startAdress равен 0, администратор оверлеев опре- деляет начальный адрес и использует, чаще всего, размеры оверлеев. Если startAdress не равен 0, то администратор оверлеев использует память выше этого адреса.
В обоих случаях, ненулевой параметр length опре- деляет максимальний размер памяти, который может быть использован администратором оверлеев.
Возвращаемое _OvrlInitExt возвращает 0, если администратор овер- значение леев может использовать для подкачки дополнитель- ную память.
Переносимость _OvrlInitExt уникальна для Turbo C++.
Смотрите также
Пример:
#include
int main(void) { /* использовать дополнительную память с адреса 0x200000L (2Mб) причем столько, сколько необходимо */ _OvrlInitExt(0x200000L,0); . . . }

_Psp

_psp
Функция Содержит адрес префикса сегмента программы (PSP).
Синтаксис extern unsigned int _psp;
Объявлено в dos.h
Описание _psp содержит адрес сегмента PSP (префикс прог- раммного сегмента) для текущей программы. PSP представляет собой дескритор процесса DOS; он со- держит специальную информацию DOS о программе. Подробную информацию о PSP вы найдете в документе "Справочное руководство программиста по DOS".

_Read

_read
Функция Считывает данные из файла.
Синтаксис #include
int _read(int handle, void *buf, unsigned len);
Файл, содержащий io.h прототип
Описание Функция _read делают попытку считать len байт из файла, связанного с handle, в буфер, адресуемый параметром buf. Функция _read является непосредс- твенным вызовом операции чтения DOS.
В файле, открытом в текстовом режиме, функция read не удаляет символы "возврат каретки".
Параметр handle - это тот же самый параметр, что получают на выходе функций creat, open, dup, dup2.
Функция _read начинает чтение с текущего положе- ния указателя позиции в файле. Когда чтение за- вершено, функция увеличивают указатель файла на число считанных байт. При работе функций с уст- ройствами, байты данных считываются непосредст- венно с устройства.
_read может считать за один раз до 65534 байт, поскольку 65535 (0xFFFF) это -1, индикатор ошибки.
Возвращаемое При успешном завершении возвращается положительное значение целое число, являющееся числом байтов, помещенных в буфер; По концу файла (EOF), функция возвращает нуль. При ошибке _read возвращает -1, и глобаль- ной переменной errno присваивает одно из следую- щих значений:
EACCES - Доступ запрещен; EBADF - Неверный номер файла.
Переносимость _read уникальна для DOS.
Смотрите также
Пример:
#include
#include
#include
#include
#include
/* #include */
int main(buffer) { void *buf; int handle,bytes; buf = malloc(10); /* Поиск в текущей директории файла с именем TEST.$$$ и попытка чтения из него 10 байт. Перед запуском этой программы необходимо создать файл TEST.$$$ */ if((handle = open("TEST.$$$",O_RDONLY|O_BINARY))== -1) { printf("Ошибка при открытии файла.\n"); exit(1); } if((bytes = _read(handle,buf,10))==-1) { printf("Ошибка чтения.\n"); exit(1); } printf("Считано %d байт.\n",bytes); return 0; }

_Rotl

_rotl
Функция Циклический сдвиг влево целого без знака.
Синтаксис #include
unsigned _rotl(unsigned value, int count);
Файл, содержащий stdlib.h прототип
Описание _rotl производит циклический сдвиг значения value влево на count разрядов. value рассматривается как целое без знака.
Возвращаемое _rotl возвращает value сдвинутое циклически на значение count разрядов.
Переносимость _rotl уникальна для DOS.
Смотрите также
Пример:
#include
#include
int main(void) { unsigned value,result; value = 32767; result = _rotl(value,1); printf("Значение %u сдвинутое на один разряд влево = %u", value,result); return 0; }

_Setcurs

_setcursortype
Функция Определяет вид курсора.
Синтаксис #include
void _setcursortype(int cur_t);
Файл, содержащий conio.h прототип
Описание Устанавливает вид курсора, в зависимости от зна- чений:
_NOCURSOR - выключает курсор _SOLIDCURSOR - курсор в виде блока _NORMALCURSOR - обычный курсор в виде подчерки- вания
Возвращаемое Нет. значение
Переносимость Данная функция работает только на компьютерах сов- местимых с IBM PC.
Пример:
#include
int main(void) { /* вывести обычный курсор */ cprintf("\r\nНормальный курсор:"); getch(); /* выключить курсор */ setcursortype(_NOCURSOR); cprintf("\r\nНет курсора:"); getch(); /* курсор в виде блока */ setcursortype(_SOLIDCURSOR); cprintf("\r\nКурсор в виде блока:"); getch(); /* вернуть обычный курсор */ cprintf("\r\nНормальный курсор:"); getch(); return 0; }

_status87

Функция Получает слово состояния операций с плавающей точкой.

Синтаксис #include

unsigned int _status87();

Файл, содержащий float.h прототип

Описание Функция _status87 получает слово состояния опера- ций с плавающей точкой, которое представляет со- бой комбинацию слова состояния математического сопроцессора 8087/80287 и прочих условий, выявля- емых подпрограммами обработки исключительных си- туаций сопроцессора 8087/80287.

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

Переносимость _status87 уникальна для DOS.

Смотрите также 7, 7,

Пример:

#include

#include

int main(void) { float x; double y=1.5e-100; printf("Состояние 8087 перед ошибкой: %X\n",_status87()); x = y; /* создание состояния ошибки */ printf("Состояние 8087 после ошибки: %X\n",_status87()); return 0; }

_Stklen

_stklen
Функция Содержит размер стека.
Синтаксис extern unsigned _stklen;
Объявлено в dos.h
Описание _stklen содержит размер стека для всех шести моде- лей памяти. Минимально допустимый размер стека равен 128 словам; если вы указываете меньшее зна- чение, то _stklen автоматически расширяется до минимума. Размер стека по умолчанию равен 4К.
В моделях small и medium размер сегмента данных вычисляется следующим образом:
data segment [small,medium] = global data + heap + stack
где размер heap может быть получен через _heaplen.
В модели tiny все (включая код) находится в одном сегменте, поэтому в сегмент данных включается код и 256 байт для PSP.
data segment [tiny] = 256 + code + global data + heap + stack
В моделях compact и large не существует локально- го heap, поэтому сегмент данных равен:
data segment [compact,large] = global data + stack
В модели huge стек является отдельным сегментом, а каждый модуль имеет собственный сегмент данных.
Смотрите также
Пример:
#include
/* Установить больший размер стека, чем используется по умолчанию */ /* Это обьявление должно находится в глобальной области определения */
extern unsigned _stklen = 54321U;
int main(void) { /* показать текущий размер стека */ printf("Размер стека: %u\n",_stklen); return 0; }

_Strerro

_strerror
Функция Определяет сообщение об ошибке.
Синтаксис #include
char *strerror(const char *s);
Файл, содержащий string.h, stdio прототип
Описание _strerror позволяет вам сгенерировать определен- ное сообщение об ошибке. Она возвращает указатель на оканчивающуюся нулем строку, содержащую сооб- щение об ошибке.
- Если s равно NULL, то функция возвращает указа- тель на строку, содержащую последнее, сгенери- рованное сообщение об ошибке.
- Если s не равно нулю, то возвращаемая строка содержит определенное вами сообщение, двоето- чие, пробел, последнее сгенерированное системой сообщение об ошибке и символ перехода на следу- ющую строку. s не может быть длинее 94 симво- лов.
_strerror аналогична strerror Turbo C версии 1.0.
Возвращаемое _strerror возвращает указатель на созданную стро- значение ку сообщения об ошибке. Строка сообщения об ошиб- ке создается в статическом буфере, содержимое которого перезаписывается при каждом вызове _strerror.
Переносимость _strerror уникальна для DOS.
Смотрите также
Пример:
#include
int main(void) { FILE *fp; /* открыть файл для записи */ fp = fopen("TEST.$$$","w"); /* вызвать состояние ошибки */ if(ferror(fp)) /* вывести сообщение об ошибке */ printf("%s",_strerror("Custom"); fclose(fp); return 0; }

_Tolower

_tolower
Функция Преобразует символы в символы в нижнем регистре.
Синтаксис #include
int _tolower(int ch);
Файл, содержащий ctype.h прототип
Описание _tolower - это макрокоманда, производящая те же преобразования, что и функция tolower, за исключением того, что должно быть точно известно, что ch - символ верхнего регистра (A-Z).
Для использования tolower необходимо включать ctype.h.
Возвращаемое _tolower возвращает преобразованное значение значение ch, если она в верхнем регистре, иначе результат не определен.
Переносимость _tolower поддерживается на системах UNIX.
Пример:
#include
#include
#include
int main(void) { int length,i; char *string = "THIS IS A STRING."; /* Перед передачей символа _tolower мы должны убедиться, что этот символ в верхнем регистре. */ length = strlen(string); for(i=0;i

_Toupper

_toupper
Функция _toupper транслирует символы в верхний регистр.
Синтаксис #include
int _toupper(int ch);
Файл, содержащий ctype.h прототип
Описание _toupper - макрокоманда, выполняющая то же самое преобразование, что и функция toupper, за исклю- чением того, что ее можно применять только в том случае, если ch - символ нижнего регистра.
Для использования _toupper вам следует подключить файл ctype.h.
Возвращаемое _toupper возвращает преобразованное значение значение ch, если она в нижнем регистре, иначе результат не определен.
Переносимость _touperr поддерживается на системах UNIX.
Пример:
#include
#include
#include
int main(void) { int length,i; char *string = "this is a string."; /* Перед передачей символа _toupper мы должны убедиться, что этот символ в нижнем регистре. */ length = strlen(string); for(i=0;i

_Version

_version
Функция Содержит номер версии DOS.
Синтаксис extern unsigned int _version;
Объявлено в dos.h
Описание _version содержит номер версии DOS. В младшем байте хранится номер версии, в старшем байте - расшире- ние номера версии. (Для версии DOS x.y, x являет- ся номером версии, y - расширением номера вер- сии).

_Write

_write
Функция Записывает данные в файл.
Синтаксис #include
int _write(int handle, void *buf, unsigned len);
Файл, содержащий io.h прототип
Описание Данная функция делает попытку записи len байт из буфера, адресуемого параметром buf, в файл, соответствующий номеру handle.
Максимальное число байтов, которое _write может записать 65534, т.к. 65535(0xFFFF) тоже самое, что и -1, что является возвращаемым кодом ошибки для _write.
_write не преобразует символ перевода строки (LF), в пару CR/LF, поскольку все файлы рассмат- ривает как двоичные.
Если число действительно записанных байтов мень- ше, чем задано, то должна быть выдана ошибка и возможно это говорит, что на диске нет места.
Для дисков и дисковых файлов, запись всегда осу- ществляется с текущего файлового указателя. Для устройств, байты посылаются непосредственно на устройства.
Для файлов открытых опцией O_APPEND, файловый указатель не устанавливается на EOF функцией _write, прежде чем будет осуществлена запись дан- ных.
Возвращаемое _write возвращает число записанных байтов.В случае значение ошибки _write возвращает -1, и устанавливает гло- бальную переменную errno в:
EACCED - Permission denied; EBADR - Bad file number.
Переносимость _write уникальна для DOS.
Смотрите также Пример:
#include
#include
#include
#include
#include
#include
int main(void) { void *buf; int handle, bytes; buf = malloc(200); /* Создать в текущей директории файл TEST.$$$ и записать в него 200 байт. Если такой файл уже существует, то он будет перезаписан */ if((handle = open("TEST.$$$",O_CREAT|O_WRONLY|O_BINARY, S_IWRITE|S_IREAD)) == -1) { printf("Ошибка при открытии файла\n"); exit(1); } if((butes = _write(handle, buf, 200)) == -1) { printf("Ошибка при записи.\n"); exit(1); } printf("Записано %d байт",bytes); close(handle); /* прим. пер. в оригинале close отсутсвует */ return 0; }

_Wscroll

_wscroll
Функция Разрешает или запрещает скроллинг в функциях ввода/ вывода на консоль.
Синтаксис _extern int _wscroll
Объявлено в conio.h
Описание _wscroll это флаг прокрутки функций ввода/вывода на консоль. По умолчанию он равен 1. Установка флага в 0 запретит прокрутку. Это удобно при вы- воде у краев экрана, когда прокрутка не нужна.

Описание функций Си

Abort

abort
Функция Ненормальное завершение выполнения программы.
Синтаксис: #include
void abort(void);
Файл, содержащий stdlib.h,process.h прототип
Описание Данная функция выводит сообщение о прекращении работы ("Abnormal program termination") в stderr, и прерывает программу посредством вызова функции _exit с кодом завершения 3.
Возвращаемое Возвращает код завершения 3 в родительский процесс значение или в DOS.
Переносимость Поддерживается в системах UNIX и определена в ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { printf("Вызов функции abort()\n"); abort(); return 0; /* эта точка не достигается */ }

About




О программе Chm4You!
Разработчик: Сергей Тарасенко (aka Tarantul)

Версия: Chm4You! 1.2.1

Веб-сайт:

Почта:

Компилятор: hhc.exe 4.78.8702.0 (Microsoft)

Динамическая библиотека: hha.dll 4.78.8702.0 (Microsoft)

Декомпилятор: hh.exe 4.78.8702.0 (Microsoft)



Abs

abs
Функция Возвращает абсолютное значение целого числа.
Синтаксис Версия для вещественных Версия для комплексных #include #include
int abs(int x); double abs(complex x);
Файл, содержащий Версия для вещественных Версия для комплексных прототип math.h, stdlib.h complex.h
Описание Функция abs возвращает абсолютное значение целого аргумента x. Если функция abs вызывается при под- ключенном файле stdlib.h, abs будет восприниматься как макрокоманда, которая расширяется до встроен- ного кода.
Если вы используете функцию abs вместо макрокоманды, то включите в вашу программу #undef abs после #include .
Возвращаемое Версия для вещественных чисел функции abs возвращает значение целое значение в диапазоне от 0 до 32767, за исклю- чением того, что аргумент -32768 будет возвращен, как -32768. Комплексная версия abs возвращает зна- чение типа double.
Переносимость Вещественная версия abs доступна в системе UNIX и определена в ANSI C. Комплексная версия abs требует С++ и, скорее всего, непереносима.
Смотрите также
Пример:
#include
#include
int main(void) { int number = -1234;
printf("число: %d абсолютное значение: %d\n",number,abs(number)); return 0; }

Absread

absread
Функция Чтение абсолютных секторов на диске.
Синтаксис #include
int absread(int drive, int nsects, int lsect, void * buffer);
Файл, содержащий dos.h прототип
Описание absread считывает заданные сектора диска. Функция игнорирует логическую структуру диска и не обращают внимание на файлы, блоки FAT или директории.
аbsread читает заданные сектора диска посредст- вом прерывания DOS 0x25.
drive = номер читаемого диска (0=А, 1=В, и т.д.) nsects = количество читаемых секторов lsect = начальный логический номер сектора buffer = адрес памяти, куда считываются данные.
Количество считываемых секторов ограничено суммар- ным размером сегмента памяти, расположенного выше адреса buffer. Таким образом, 64К - максимальный размер области памяти, который может быть обработан за один вызов функции absread.
Возвращаемое При успешном завершении absread возвращает 0. значение При возникновении ошибки, функция возвращает значение -1 и присваивают переменной errno значе- ние регистра AX, получаемое при системном вызове.
Переносимость absread уникальна для DOS.
Смотри также
Пример:
#include
#include
#include
#include
#include
#define SEGSIZE 512
unsigned char buf[SEGSIZE];
int main(void) { int i,j,sector,drive; char str[10]; printf("Введите метку диска:"); gets(str); drive = toupper(str[0])-'A'; printf("Введите номер сектора, который нужно считать:"); gets(str); sector = atoi(str); if(absread(drive,1,sector,&buf)!=0) { perror("Ошибка диска")ж exit(1); } printf("\nДисковод %c Сектор %d\n",'A'+drive,sector); for(i=0; i

Abswrite

abswrite
Функция Запись абсолютных секторов на диск.
Синтаксис #include
int abswrite(int drive, int nsects, int lsect, void * buffer);
Файл, содержащий dos.h прототип
Описание abswrite записывает заданные сектора диска. Функ- ция игнорирует логическую структуру диска и не об- ращает внимание на файлы, блоки FAT или директо- рии.
Примечание. При неверном использовании abswrite может перезаписать файлы, директории или блоки FAT.
аbswrite произвадит запись секторов диска посредс- твом прерывания DOS 0x26.
drive = номер диска, на который производится за- пись (0=А, 1=В, и т.д.) nsects = количество записываемых секторов lsect = начальный логический номер сектора buffer = адрес памяти, откуда ,берутся данные.
Количество записываемых секторов ограничено суммар- ным размером сегмента памяти, расположенного выше адреса buffer. Таким образом, 64К - максимальный размер области памяти, который может быть обработан за один вызов функции abswrite.
Возвращаемое При успешном завершении abswrite возвращает 0. значение При возникновении ошибки, функция возвращает значение -1 и присваивает переменной errno значе- ние регистра AX, получаемое при системном вызове. Более детальную информацию об еrrno смотрите в документации по DOS.
Переносимость abswrite уникальна для DOS.
Смотрите также EW1accessFW0
Функция Определяет возможность доступа к файлу.
Синтаксис #include
int access(const char * filename, int amode);
Файл, содержащий io.h прототип
Описание access проверяет файл c именем filename для определения, существует ли он, может ли он быть прочитан, записан или выполнен.
Список значений параметра amode: 06 проверка разрешения на чтение и запись; 04 проверка разрешения на чтение; 02 проверка разрешения на запись; 01 проверка на выполнение (игнорируется); 00 проверка на существование файла;
Примечание. Под управлением операционной системы DOS все существующие файлы имеют доступ на чтение (amode равен 04), поэтому 00 и 04 дают один и тот же результат. Аналогично, значения 06 и 02 эквивалентны, так как в DOS доступ на запись подразумевает и доступ на чтение.

Если параметр filename является ссылкой на дирек- торию, функция access просто проверяет, существует данная директория или нет.

Возвращаемое Если требуемый способ доступа разрешен, access значение возвращает значение 0, иначе возвращается значение -1 и переменная errno получает одно из следующих значений:

ENOENT - Маршрут или имя файла не найдены EACCES - Отказ доступа.

Переносимость Поддерживается на системах UNIX.

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

Пример:

#include

#include

int file_exists(char * filename);

int main(void) { printf("Существует ли файл NOTEXIST.FIL: %s\n", file_exists("NOTEXIST.FIL") ? "Да":"Нет"); }

int file_exists(char * filename) { return (access(filename, 0) == 0); }

Результат: Существует ли файл NOTEXIST.FIL: Нет

Acos

acos
Функция Вычисляет арккосинус.
Синтаксис Версия для вещественных Версия для комплексных #include #include
double acos(double x); complex acos(complex x);
Файл, содержащий Версия для вещественных Версия для комплексных прототип math.h complex.h
Описание acos возвращает арккосинус введенного значения. Ар- гументы acos должны быть в диапазоне от -1 до 1. Иначе acos возвращает NAN и устанавливает errno в
EDOM - Ошибка области определения
Комплексный обратный косинус определяется следующим образом:
acos(z)=-i*log(z+i*sqrt(1-z^2))
Возвращаемое Вещественная версия acos возвращает значение в диа- значение пазоне от 0 до pi. Управление ошибками для этой фун- кции можно изменить с помощью функции matherr.
Переносимость Вещественная версия acos поддерживается в системах UNIX и определена в ANSI C. Комплексная версия acos требует С++ и, скорее всего, непереносима.
Смотрите также , Пример:
#include
#include
int main(void) { double result; double x=0.5; result = acos(x); printf("Арккосинус от %1f равен %1f\n",x,result); return 0; }

Allocmem

allocmem
Функция Выделяет сегмент памяти DOS.
Синтаксис #include
int allocmem(unsigned size, unsigned *segp);
Файл, содержащий dos.h прототип
Описание allocmem для выделения блока свободной памяти использует системный вызов DOS 0x48 и возв- ращает в качестве результата адрес сегмента выде- ленного блока.
size - желаемый размер области памяти в параграфах (параграф равен 16 байт). segp - указатель на слово, которому будет присвоен адрес сегмента нового выделенного блока памяти. Присваивания не происходит, если запрашиваемого количества памяти не имеется в наличии.
Все выделяемые блоки выравниваются по параграфам.
allocmem и malloc не могут использоваться вместе.
Возвращаемое allocmem при успешном завершении возвра- значение щает значение -1. При возникновении ошибки возвращается число (размер в параграфах наибольше- го блока памяти, имеющегося в наличии).
Ошибка, возвращаемая из allocmem, устанавливает _doserrno и глобальную переменную errno в
ENOMEM - Не хватает памяти
Переносимость allocmem уникальна для DOS.
Смотрите также
Пример:
#include
#include
#include
int main(void) { unsigned int size,segp; int stat;
size = 64; /* 64 * 16 = 1024 байта */ stat = allocmem(size,&segp); if(stat == -1) printf("Выделен сегмент памяти по адресу %x\n",segp); else printf("Ошибка! Допустимый максимальный размер = %u\n",stat); return 0; }

Arc

arc
Функция Рисует дугу окружности.
Синтаксис #include
void far arc(int x,int y,int stangle, int endangle,int radius);
Файл, содержащий graphics.h прототип
Описание arc рисует текущим цветом дугу окружности с цент- ром в точке с координатами (x,y) и радиусом radius . Дуга рисуется от угла stangle до угла endangle. Если stangle равен 0 и endangle равен 360, функция arc нарисует полную окружность.
Угол для arc отсчитывается против часовой стрелки, где 0 градусов соответствует 3 часам на цифербла- те, 90 градусов - 12 часам и т.д.
Замечание. Параметр linestyle не оказывает воздей- ствие при построении дуг, окружностей, эллипсов и секторов. Используется только параметр thickness.
Замечание. Если вы используете CGA в режиме высо- кого разрешения или монохромный графический адап- тер, примеры на использование графических функций, приведенные в этой книге, могут не дать ожидаемого результата. Если ваша система работает на CGA или монохромном адаптере, передайте значение 1 тем функциям, которые изменяют цвет закрашивания или рисования, (например, setcolor, setfillstyle и setlinestyle) вместо символической константы цвета (определенной в graphics.h).
Возвращаемое Нет. значение
Переносимость Эта функция уникальна для Turbo C++. Она работа- ет только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int midx,midy; int stangle = 45,endangle = 135; int radius = 100;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx() / 2; midy = getmaxy() / 2; setcolor(getmaxcolor(1));
/* рисует дугу */ arc(midx,midy,stangle,endangle,radius);
/* очистка */ getch(); closegraph(); return 0; }

Arg

arg
Функция Возвращает угол числа на комплексной плоскости.
Синтаксис #include
double arg(complex x);
Файл, содержащий complex.h прототип
Описание arg возвращает в радианах угол числа на комплекс- ной плоскости. Положительное направление вещественной оси имеет угол 0, а положительное направление мнимой оси имеет угол Pi. Если аргумент, передаваемый функ- ции, равен комплексному 0 (ноль), то arg возвраща- ет 0.
Возвращаемое arg(x) возвращает atan2(imag(x),real(x)). значение
Переносимость Функции комплексных чисел требуют С++ и поэтому не- переносимы.
Смотри также
Пример:
#include
#include
int main(void) { double x = 3.1, y = 4.2; complex z = complex(x,y); cout

Asctime

asctime
Функция Преобразует дату и время в код ASCII.
Синтаксис #include
char * asctime(const struct tm * tblock);
Файл, содержащий time.h прототип
Описание asctime преобразует время, содержащееся в виде структуры в *tblock, в 26-символьную строку такой же формы, как и в функции ctime:
Sun Sep 16 01:03:52 1973\n\0
Возвращаемое asctime возвращает указатель на символьную строку, значение содержащую дату и время. Эта строка является стати- ческой переменной, которая изменяет свое значение при каждом вызове функции asctime.
Переносимость Поддерживается в системах UNIX и определена в ANSI C.
Смотрите также
Пример:
#include
#include
#include
int main(void) { struct tm t; char str[80];
/* простейшее заполнение структуры */ t.tm_sec = 1; /* секунды */ t.tm_min = 30; /* минуты */ t.tm_hour = 9; /* часы */ t.tm_mday = 22; /* день месяца */ t.tm_mon = 11; /* месяц */ t.tm_year = 56; /* год не включает век */ t.tm_wday = 4; /* день недели */ t.tm_yday = 0; /* не отображается в asctime */ t.tm_isdst = 0; /* летнее время, не отобра- жается asctime */ /* преобразование структуры в строку оканчиваю- щуюся нулем */ strcopy(str,asctime(&t)); printf("%s\n",str); return 0; }

Asin

asin
Функция Вычисляет арксинус.
Синтаксис Версия для вещественных Версия для комплексных #include #include
double asin(double x); complex asin(complex x);
Файл, содержащий Версия для вещественных Версия для комплексных прототип math.h complex.h
Описание Версия asin для вещественных чисел возвращает арк- синус введенного значения. Аргументы функции asin должны находиться в диапазоне от -1 до 1, в про- тивном случае asin возвращает NAN и устанавливает errno в
EDOM - Ошибка области определения.
Комплексный арксинус определяется следующим обра- зом:
asin(z) = -i*log(i*z+sqrt(1-z^2))
Возвращаемое Вещественная версия asin возвращает значение в диа- значение пазоне от -pi/2 до pi/2. Обработку ошибок для этой функции можно изменить с помощью функции matherr.
Переносимость Поддерживается в системах UNIX и определена в ANSI C. Комплексная версия asin требует С++ и скорее всего непереносима.
Смотрите также ,
Пример:
#include
#include
int main(void) { double result; double x = 0.5; result = asin(x); printf("Арксинус от %1f равен %1f\n",x,result); return 0; }

Assert

assert
Функция Проверяет условия и возможность прерывания выполне- ния программы.
Синтаксис #include
void assert(int test);
Файл, содержащий assert.h прототип
Описание Функция assert представляет собой макрокоманду, которая расширяется до оператора if; если параметр test принимает нулевое значение, то assert прерыва- ет программу (при помощи вызова abort) и выводит сообщение в stderr.
assert выводит следующее сообщение:
Assertion failed: , file , line
Позиции filename и linenum, перечисленные в сообще- нии, являются именем исходного файла и номером строки программы, в которой появляется макрокоманда assert.
Если в исходный код программы вы вставите перед оператором #include оператор #define NDEBUG ("без отладки"), то функция assert будет воспринята как комментарий.
Возвращаемое Нет. значение
Переносимость Данная макрокоманда поддерживается на некоторых системах UNIX, включая Systems III и V, совместима с ANSI C.
Смотрите также
Пример:
#include
#include
#include
struct ITEM { int key; int value; };
/* Добавление элемента в список. Проверка, является ли элемент ненулевым */
void additem(struct ITEM *itemptr) { assert(itemptr != NULL); /*... добавление элемента ... */ }
int main(void) { additem(NULL); return 0; }
Результат Assertion failed: itemptr != NULL, file C:\TC\ASSERT.C, line 12

Atan

atan
Функция Вычисляет арктангенс.
Синтаксис Версия для вещественных Версия для комплексных #include #include
double atan(double x); complex atan(complex x);
Файл, содержащий Версия для вещественных Версия для комплексных прототип math.h complex.h
Описание atan возвращает арктангенс введенного значения.
Комплексный арктангенс определяется следующим обра- зом:
atan(z) = -0.5*i*log((1+i*z)/(1-i*z))
Возвращаемое Вещественная версия atan возвращает значение в диа- значение пазоне от -pi/2 до pi/2. Обработку ошибок для этой функции можно изменить с помощью функции matherr.
Переносимость Вещественная версия atan поддерживается в системах UNIX и определена в ANSI C. Комплексная версия требует С++ и, скорее всего, непереносима.
Смотрите также , Пример:
#include
#include
int main(void) { double result; double x = 0.5; result = atan(x); printf("Арктангенс от %1f равен %1f\n",x,result); return 0; }

atan2

Функция Вычисляет арктангенс от y/x.

Синтаксис #include

double atan2(double y, double x);

Файл, содержащий math.h прототип

Описание atan2 возвращает арктангенс от y/x и производит корректировку результата, даже если результирую- щий угол близок к pi/2 или -pi/2 (x близок к 0).

Если и x и y установлены в 0, то функция устанавли- вает errno в EDOM.

Возвращаемое atan2 возвращает значение в диапазоне от -pi до pi. значение Обработку ошибок для этой функции можно изменить с помощью функции matherr.

Переносимость Поддерживается в системах UNIX и определена в ANSI C.

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

Пример:

#include

#include

int main(void) { double result; double x = 90.0,y = 15.0; result = atan2(x,y); printf("Арктангенс от отношения %1f равен %1f\n",(x/y),result); return 0; }

Atexit

atexit
Функция Регистрирует функцию завершения работы.
Синтаксис #include
int atexit(atexit_t func)
Файл, содержащий stdlib.h прототип
Описание Функция atexit регистрирует функцию, указателем которой является переменная func, как функцию вы- хода из программы. При нормальном завершении прог- раммы функция exit вызывает функцию (*func)() пе- ред возвратом в операционную систему.
Каждый вызов функции atexit регистрирует разные функции выхода. Может быть зарегистрировано до 32 функций. Они выполняются в следующем порядке - последняя регистрируемая выполняется первой.
Возвращаемое Функция atexit возвращает 0 при успешном заверше- значение нии и ненулевое значение при неудачном завершении (не остается памяти, чтобы регистрировать функ- цию).
Переносимость atexit совместима с ANSI C.
Смотрите также ..
Пример:
#include
#include
void exit_fnl(void) { printf("Функция выхода 1\n"); } void exit_fn2(void) { printf("Функция выхода 2\n"); }
int main(void) { /* послать функцию выхода */ atexit(exit_fn1); /* послать функцию выхода */ atexit(exit_fn2); printf("Завершение main ...\n"); return 0; }

Atof

atof
Функция Преобразует строку в число с плавающей точкой.
Синтаксис #include
double atof(const char * s);
Файл, содержащий math.h, stdlib.h прототип
Описание Функция atof преобразует символьную строку, адресный указатель которой находится в аргументе s, в число с двойной точностью (тип double); дан- ная функция распознает символьное представление числа с плавающей точкой следующего вида:
- необязательная строка табуляции и пробелов; - необязательный знак; - строку цифр и необязательную десятичную точку (цифры могут находиться с обеих сторон от точки) - необязательные символы e или E, за которыми сле- дует необязательное целое со знаком
Символы должны соответствовать следующему формату:
[пробелы] [знак] [ddd] [.] [ddd] [e|E[знак]ddd]
atof также распознает +INF и -INF для плюс и минус бесконечности, +NAN и -NAN для нечисловых значений.
Эта функция прекращает преобразование на первом не- распознаваемом символе.
strtod аналогична atof; она дает лучшее распознава- ние ошибок, и поэтому в некоторых случаях предпочти- тельнее.
Возвращаемое atof возвращает преобразованное значение значение входной символьной строки.
В случае переполнения atof возвращает положитель- ное или отрицательное значение HUGE_VAL, глобаль- ная переменная errno устанавливается в ERANGE и функция matherr не вызывается.
Переносимость Поддерживается в системах UNIX и определена в ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { float f; char *str = "12345.678"; f = atof(str); printf("строка = %s значение = %5.3f\n",str,f); return 0; }

Atoi

atoi
Функция Преобразует строку в целое число.
Синтаксис #include
int atoi(const char *s);
Файл, содержащий stdlib.h прототип
Описание Функция atoi преобразует символьную строку, адресный указатель которой находится в аргументе s, в число типа int; данная функция распознает (в следующем порядке):
- необязательную строку табуляции и пробелов; - необязательный знак; - строку цифр.
Символы должны соответствовать следующему формату:
[пробелы] [знак] [ddd]
Эта функция прекращает преобразование на первом не- распознаваемом символе.
atoi не отслеживает переполнение.
Возвращаемое atoi возвращает преобразованное значение значение входной символьной строки. Если строка не может быть преобразована в число соответствующего типа (int), то возвращаемое значение равно 0.
Переносимость Поддерживается в системах UNIX и определена в ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { int n; char *str = "12345"; n = atoi(str); printf("строка = %s целое = %d\n",str,n); return 0; }

Atol

atol
Функция Преобразует строку в число типа long.
Синтаксис #include
long atol(const char * s);
Файл, содержащий stdlib.h прототип
Описание Функция atol преобразует символьную строку, адресный указатель которой находится в аргументе s, в число типа long. Данная функция распознает в следующем порядке:
- необязательную строку табуляции и пробелов; - необязательный знак; - строку цифр.
Символы должны соответствовать следующему формату:
[пробелы] [знак] [ddd]
Эта функция прекращает преобразование на первом не- распознаваемом символе.
atol не отслеживает переполнение (результат не опре- делен).
Возвращаемое atol возвращает преобразованное значение значение входной символьной строки. Если строка не может быть преобразована в число соответствующего типа (long), то возвращаемое значение равно 0.
Переносимость Поддерживается в системах UNIX и определена ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { int n; char *str = "12345"; n = atoi(str); printf("строка = %s целое = %d\n",str,n); return 0; }

Описание функций Си

Bar

bar
Функция Рисует прямоугольник.
Синтаксис #include
#include
void far bar(int left,int top,int right,int bottom);
Файл, содержащий graphics.h прототип include
Описание bar рисует двухмерный заполненный прямоугольник. Прямоугольник зарисовывается, используя текущий цвет и шаблон заполнения. bar не рисует контур прямоугольника; для того, чтобы нарисовать контур двухмерного прямоугольника, используйте функцию bar3d, с параметром depth равным 0.
Верхний левый и нижний правый углы прямоугольника заданы параметрами (left,top) и (right,bottom) соответствено. Координаты даются в пикселях.
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Эта функция рабо- тает только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int midx,midy,i;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx() / 2; midy = getmaxy() / 2;
/* цикл по шаблонам заполнения */ for(i=SOLID_FILL; i

Bar3d

bar3d
Функция Рисует трехмерный столбец.
Синтаксис #include
void far bar3d(int left, int top, int right, int bottom, int depth, int topflag); Файл, содержащий graphics.h прототип
Описание bar3d рисует трехмерный прямоугольный столбец, затем закрашивает его, используя текущий шаблон и цвет заполнения. Трехмерный контур столбца рису- ется текущим цветом и типом линии. Глубина столб- ца в точках экрана задается параметром depth. Па- раметр topflag определяет, будет ли рисоваться вершина трехмерного столбца. Если topflag не 0, вершина рисуется, в противном случае вершина не рисуется. (создается возможность ставить несколь- ко столбцов друг на друга.)
Верхний левый и нижний правый угол прямоугольника задаются (left, top) и (right,bottom) соответст- венно.
Для вычисления типичной глубины для bar3d возьми- те 25% ширины столбца, например:
bar3d(left,top,right,bottom,(right-left)/4,1)
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Эта функция рабо- тает только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int midx,midy,i;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx() / 2; midy = getmaxy() / 2;
/* цикл по шаблонам заполнения */ for(i=SOLID_FILL; i

Bcd

bcd
Функция Преобразует число в двоично-десятичный код.
Синтаксис #include
bcd bcd(int x); bcd bcd(double x); bcd bcd(double x, int decimals);
Файл, содержащий bcd.h прототип
Описание Все обычные арифметические операции переопределены для работы с числами в двоично-десятичном кодиро- вании (BCD). BCD числа имеют около 17 десятичных разрядов и имеют диапазон представления от 1х10^-125 до 1x10^125. Для преобразования числа в BCD кодировании обратно в float, double или long double можно воспользоваться функцией real. Аргу- мент desimals необязателен. Он определяет сколько необходимо сохранить разрядов после десятичной точки при преобразовании. Число округляется в со- ответствии с правилами округления банкомета, по которым число округляется до ближайшего целого числа, а остаток округляется до четной цифры.
Возвращаемое Двоично-десятичный эквивалент данного числа. значение
Переносимость bcd уникальна для Turbo C++; вы должны компилиро- вать с помощью С++.
Смотри также
Пример:
#include
#include
double x = 1000.0; // десять тысяч долларов bcd a = bcd(x/3,2); // одна треть, округленная до // одной сотой int main(void) { cout

Bdos

bdos
Функция Доступ к системным вызовам DOS.
Синтаксис #include
int bdos(int dosfun, unsigned dosdx, unsigned dosal);
Файл, содержащий dos.h прототип
Описание bdos обеспечивает прямой доступ ко многим систем- ным вызовам DOS. Описание всех системных вызовов вы найдете в документе "Справочное руководство по DOS".
В системных вызовах, требующих целый аргумент, используйте функцию bdos; если в качестве аргу- мента они требуют указатель, то используйте функ- цию bdosptr.
Для моделей данных large (compact, large, huge) предпочтительнее использовать для системных вызо- вов функцию bdosptr вместо bdos с адресным указа- телем в качестве аргумента.
dosfun описан в документе "Справочное руководство по DOS".
dosdx является значением регистра DX.
dosal является значением регистра AL.
Возвращаемое Функция bdos возвращает значение регистра AX, значение устанавливаемое при системном вызове.
Переносимость bdos уникальна для DOS.
Смотрите также 6, 6
Пример:
#include
#include
/* получение текущего устройства, как 'A','B',...*/ char current_drive(void) { char curdrive; /* получение текущего диска, как 0,1,...*/ curdrive = bdos(0x19,0,0); return('A' + curdrive); }
main() { printf("Текущий дисковод %c:\n", current_drive()); }
Результат Текущий дисковод C:

Bdosptr

bdosptr
Функция Доступ к системным вызовам DOS.
Синтаксис #include
int bdosptr(int dosfun, void * argument, unsigned dosal);
Файл, содержащий dos.h прототип
Описание bdosptr обеспечивает прямой доступ ко многим сис- темным вызовам DOS. Описание всех системных вызо- вов вы найдете в документе "Справочное руководст- во по DOS".
В системных вызовах, требующих целый аргумент, используйте функцию bdos; если в качестве аргу- мента они требуют указатель, то используйте функ- цию bdosptr.
Для моделей данных large (compact, large, huge) предпочтительнее использовать для системных вызо- вов функцию bdosptr вместо bdos с адресным указа- телем в качестве аргумента.
dosfun описан в документе "Справочное руководство по DOS".
В моделях данных типа small параметр argument в bdosptr задает DX; в моделях данных типа large он задает значение DS:DX, используемое в системном вызове.
dosal является значением регистра AL.
Возвращаемое Функция bdosptr возвращает значение регистра AX значение при успешном завершении и значение -1 при неудач- ном завершении. При неудачном завершении устанав- ливаются значения переменных errno и _doserrno.
Переносимость bdosptr уникальна для DOS.
Смотрите также 6, 6
Пример:
#include
#include
#include
#include
#include
#include
#define BUFLEN 80
int main(void) { char buffer[BUFLEN]; int test; printf("Введите полный маршрут директории:"); gets(buffer); test = bdosptr(0x3b,buffer,0); if(test) { /* в errno.h приведен список кодов ошибок */ printf("Ошибка DOS, номер: %d\n",errno); exit(1); } getcwd(buffer,BUFLEN); printf("Текущая директория: %s\n",buffer); return 0; }

Bioscom

bioscom
Функция Выполняет ввод/вывод из последовательного порта.
Синтаксис #include
int bioscom(int cmd, char abyte, int port);
Файл, содержащий bios.h прототип
Описание Функция bioscom выполняет разнообразную связь через RS232 при помощи порта ввода/вывода, указываемого в аргументе port.
Значение 0 аргумента port соответствует COM1, значение 1 соответствует COM2 и т.д.
Значение аргумента cmd может быть одним из следу- ющих:
0 - устанавливает параметры связи в abyte; 1 - пересылает символ в abyte по линии связи; 2 - получает символ по линии связи; 3 - возвращает текущее состояние коммуникационного порта.
abyte является комбинацией следующих битов (из каждой группы выбирается одно значение):
0x02 - 7 битов данных 0x00 110 бод 0x03 - 8 битов данных 0x20 150 бод
0x00 - 1 стоп-бит 0x40 300 бод 0x04 - 2 стоп-бита 0x60 600 бод 0x00 - нет проверки на четность 0x80 1200 бод 0x08 - проверка на нечетность 0xA0 2400 бод 0x18 - проверка на четность 0xC0 4800 бод 0xE0 9600 бод
Например, если abyte имеет следующее значение 0xEB (0xE0|0x08|0x00|0x03), то это устанавливает для коммуникационного порта скорость передачи 9600 бод, контроль на нечетность, 1 стоп-бит, и 8 битов данных. bioscom использует прерывание BIOS 0x14.
Возвращаемое Для всех значений cmd bioscom возвращает шестнадца- значение тибитовое целое число, где 8 старших бит - это биты состояния, а 8 младших битов варьируются в зави- симости от значения cmd. Старшие биты в возвраща- емом значении имеют следующие значения:
бит 15 - таймаут; бит 14 - передающий сдвиговый регистр пуст: бит 13 - передающий регистр хранения пуст; бит 12 - обнаружено прерывание; бит 11 - ошибка формирования кадра синхронизации; бит 10 - ошибка четности; бит 9 - ошибка переполнения; бит 8 - готовность данных.
Если значение в abyte невозможно передать, то ус- танавливается бит 15. В других случаях старшие и младшие биты устанавливаются соответствующим об- разом. К примеру, если возникла ошибка кадра син- хронизации, то устанавливается бит 11.

Если cmd имеет значение 2, то считываемый байт находится в младших битах, если не было ошибки. Если же произошла ошибка, устанавливается, по крайней мере, один из старших бит. Если ни один из старших бит не установлен, значит байт был по- лучен без ошибки.

Если cmd имеет значение 0 или 3, то возвращаемое значение содержит старшие биты, как они были опреде- лены выше, а младшие биты определяются следующим образом:

бит 7 - прием обнаруженного линейного сигнала; бит 6 - кольцевой индикатор; бит 5 - набор данных готов; бит 4 - готовность к передаче; бит 3 - изменение в приеме детектора линейного сигнала; бит 2 - завершающий кольцевой детектор; бит 1 - изменение в готовности набора данных; бит 0 - изменение в готовности к передаче.

Переносимость bioscom поддерживается только на компьютерах IBM PC или совместимых с ними.

Пример:

#include

#include

#define COM1 0 #define DATA_READY 0x100 #define SETTINGS (0x80|0x02|0x00|0x00)

int main(void) { register int in, out, status; bioscom(0, SETTINGS, COM1); cprintf("... BIOSCOM [ESC] to exit ...\n"); while (1) { status = bioscom(3, 0, COM1); if (status & DATA_READY) if ((out=bioscom(2, 0, COM1) & 0x7F) != 0) putch(out); if (kbhit()) { if ( (in = getch()) == '\x1B') return(0); bioscom(1, in, COM1); } } return 0; }

Biosdisk

biosdisk
Функция Дисковые функции BIOS.
Синтаксис #include
int biosdisk(int cmd, int drive, int head, int track, int sector, int nsects, void * buffer);
Файл, содержащий bios.h прототип
Описание biosdisk использует прерывание 0x13 для того,чтобы передать выполнение дисковых операций непосредст- венно системе BIOS.
drive представляет собой число, которое задает используемый дисковод: 0 для 1-го устройства гиб- ких дисков, 1 для 2-го устройства гибких дисков, 3 для 3-го устройства и т.д. Для жестких дисковых устройств значение drive 0x80 задает первый дис- ковод, значение 0x81 - второй дисковод, значение 0x82 - третий и т.д.
Для жестких дисков указывается физическое устрой- ство, а не раздел диска. При необходимости прик- ладная программа должна будет самостоятельно ин- терпретировать таблицу разделов.
cmd обозначает выполняемую операцию. В зависимос- ти от значения cmd остальные аргументы могут тре- боваться или нет.
Далее перечислены возможные значения cmd для компьютеров IBM PC, XT, AT, PS/2 или совместимых с ними.
0 Аппаратный сброс дискового контроллера. Все остальные параметры игнорируются. 1 Возвращает статус последней дисковой операции. Все остальные параметры игнорируются. 2 Считывает в память один или несколько секторов диска. Начальный сектор, подлежащий считыванию, задается аргументами head, track и sector. Чис- ло считываемых секторов задается аргументом nsects. Данные считываются в buffer по 512 бай- тов на сектор. 3 Записывает на диск из памяти один или более дисковых секторов. Начальный сектор задается аргументами head, track и sector. Число сек- торов определяется аргументом nsects. Данные записываются на диск из buffer по 512 байт на сектор. 4 Производит верификацию одного или более секто- ров. Начальный сектор определяется аргументами head, track и sector. Количество секторов зада- ется в nsects. 5 Форматирует дорожку. Дорожка определяется аргументами head и track. buffer является ад- ресным указателем таблицы дескрипторов секто- ров, которые будут записываться на указанной дорожке. Обратитесь к документу "Техническое справочное руководство по IBM PC", в котором подробно описана данная таблица и операция форматирования.

Только для компьютеров типа XT, AT, PS/2 и сов- местимых с ними разрешены следующие значения ар- гумента cmd:

6 Форматирует дорожку и устанавливает флаги пло- хих секторов. 7 Форматирует диск, начиная с заданной дорожки. 8 Возвращает параметры текущего дисковода. Дан- ная информация записывается в buffer в первые четыре байта. 9 Задает характеристики пары устройств. 10 Производит удлиненное считывание, когда чи- тается 512 байтов плюс 4 дополнительных байта на каждый сектор. 11 Выполняет удлиненную запись, когда записывается 512 байтов плюс 4 дополнительных байта на каждый сектор. 12 Выполняет дисковый поиск. 13 Альтернативный сброс диска. 14 Считывает буфер сектора. 15 Записывает буфер сектора. 16 Проверяет готовность заданного диска. 17 Рекалибрует диск. 18 Производит диагностику контроллера RAM. 19 Производит диагностику дисковода. 20 Производит внутреннюю диагностику контроллера.

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

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

0x00 успешная операция. 0x01 неверная команда. 0x02 адресный маркер не найден. 0x03 попытка записи на диск, защищенный от записи. 0x04 сектор не найден. 0x05 неудачный сброс (для жесткого диска). 0x06 диск изменился после последней операции. 0x07 сбой параметра активности дисковода. 0x08 конфликт при работе DMA. 0x09 попытка обращения к DMA за границей 64К. 0x0A обнаружен дефектный сектор. 0x0B обнаружена дефектная дорожка. 0x0C неподдерживаемая дорожка. 0x10 ошибка CRC/ECC при чтении диска. 0x11 ошибка CRC/ECC при корректировке данных. 0x20 сбой при работе контроллера. 0x40 сбой при операции поиска. 0x80 узел подсоединения не отвечает. 0xAA устройство не готово (только для жесткого диска). 0xBB произошла нераспознаваемая ошибка (только для жесткого диска). 0xCC произошел сбой при записи. 0xE0 ошибка статуса. 0xFF сбой операции распознавания.


Заметим, что код 0x11 не является ошибкой, посколь- ку данные являются корректными. Возвращаемое значе- ние выдается в любом случае, чтобы дать возможность прикладной программе выработать решение.

Переносимость Данная функция поддерживается только на компью- терах IBM PC и совместимых с ними.

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

Пример:

#include

#include

int main(void) { #define CMD 2 /* команда чтения сектора */ #define DRIVE 0 /* номер дисковода для A: */ #define HEAD 0 /* номер головки */ #define TRACK 1 /* номер дорожки */ #define SECT 1 /* номер секторов */ #define NSECT 1 /* число секторов */

int result; char buffer[512]; printf("Попытка чтения дисковода A:\n"); result = biosdisk(CMD,DRIVE,HEAD,TRACK,SECT,NSECT,buffer); if(result==0) printf("Успешное чтение диска в дисководе A:"); else printf("Попытка чтения дисковода A: неудача\n"); return 0; }

Biosequi

biosequip
Функция Проверяет оборудование.
Синтаксис #include
int biosequip(void);
Файл, содержащий bios.h прототип
Описание biosequip возвращает целое число, описывающее оборудование, подсоединенное к системе. Для этой цели используется прерывание 0x11 BIOS.
Возвращаемое Возвращаемое функцией значение представ- значение ляет собой набор битовых полей. Для компьютера IBM PC этот набор следующий:
биты 14-15 Количество установленных параллельных принтеров 00 = 0 принтеров 01 = 1 принтер 10 = 2 принтера 11 = 3 принтера бит 13 Подсоединение последовательного принтера. бит 12 Подсоединение игрового контроллера. биты 9-11 Количество портов передачи данных. 000 = 0 портов 001 = 1 порт 010 = 2 порта 011 = 3 порта 100 = 4 порта 101 = 5 портов 110 = 6 портов 111 = 7 портов бит 8 DMA (прямой доступ к памяти) 0=Компьютер имеет DMA. 1=Компьютер не имеет DMA; например, PCJr. биты 6-7 Количество дисков 00=1 дисковод 01=2 дисковода 10=3 дисковода 11=4 дисковода (только, если бит 0 = 1) бит 4-5 Исходный видео-режим 00 = не используется 01 = 40х25 BW с цветной платой 10 = 80х25 BW с цветной платой 11 = 80х25 BW с монохромной платой биты 2-3 Размер RAM в компьютере 00 = 16К 01 = 32К 10 = 48К 11 = 64К бит 1 сопроцессор с плавающей точкой бит 0 загрузка с диска
Переносимость biosequip поддерживается только на компьютерах IBM PC или совместимых с ними.
Пример:
#include
#include
#define CO_PROCESSOR_MASK 0x0002
int main(void) { int equip_check; /* получить текущую конфигурацию оборудования */ equip_check = biosequip(); /* имеется ли сопроцессор? */ if(equip_check & CO_PROCESSOR_MASK) printf("Сопроцессор установлен\n"); else printf("Сопроцессор не установлен\n"); return 0; }

Bioskey

bioskey
Функция Интерфейс с клавиатурой при помощи функций BIOS.
Синтаксис #include
int bioskey(int cmd);
Файл, содержащий bios.h прототип
Описание bioskey посредством прерывания BIOS 0x16 выполняет различные операции c клавиатурой. Параметр cmd определяет операцию.
Возвращаемое Значение, возвращаемое функцией bioskey, зависит от значение выполняемой операции, которая определяется аргумен- том cmd:
-------------------------------------------------- cmd Операция -------------------------------------------------- 0 Если младшие 8 бит не нулевые, bioskey возвращает код ASCII следующей нажатой кла- виши, ожидающей в очереди. Если младшие 8 битов равны 0, то старшие 8 битов содержат расширенные коды клавиатуры, описание кото- рых вы можете найти в документе "Техническое справочное руководство по IBM PC".
1 Производится проверка, имело ли место нажа- тие клавиши. Если при проверке возвращает- ся значение 0, это означает, что клавиша не была нажата. В противном случае возвра- щается значение очередной нажатой клавиши. Сам же код очередной нажатой клавиши сох- раняется и будет возвращен при следующем вызове функции bioskey при значении пара- метра cmd, равном нулю.
2 Запрашивает текущий статус клавиш типа SHIFT. Значение получается при логическом сложении следующих кодов (операции "ИЛИ") Бит 7 0x80 INSERT нажат Бит 6 0x40 CAPS нажат Бит 5 0x20 NUM LOCK нажат Бит 4 0x10 SCROLL LOCK нажат Бит 3 0x08 ALT нажат Бит 2 0x04 CTRL нажат Бит 1 0x02 LEFT SHIFT нажат Бит 0 0x01 RIGHT SHIFT нажат
Переносимость bioskey поддерживается только на компьютерах IBM PC или совместимых с ними.
Пример:
#include
#include
#include
#define RIGHT 0x0001 #define LEFT 0x0002 #define CTRL 0x0004 #define ALT 0x0008
int main(void) { int key, modifiers;
/* Функция 1 возвращает 0, пока не будет нажата клавиша. Ожидание ввода. */; /* now use function 0 to get return value of while (bioskey(1) == 0);
/* Теперь используем функцию 0, чтобы получить значение клавиши */ key = bioskey(0);
/* Используем функцию 2, чтобы определить, используются ли клавиши типа SHIFT */. modifiers = bioskey(2); if (modifiers) { printf("["); if (modifiers & RIGHT) printf("RIGHT "); if (modifiers & LEFT ) printf("LEFT "); if (modifiers & CTRL ) printf("CTRL "); if (modifiers & ALT ) printf("ALT "); printf("] "); } /* вывести символ нажатой клавишу */ if (isalnum(key & 0xFF)) printf("'%c'\n",key); else printf("%#02x\n",key); }
Результат Key Pressed was: [LEFT] 'T'

Biosmemo

biosmemory
Функция Возвращает размер оперативной памяти.
Синтаксис #include
int biosmemory(void);
Файл,содержащий bios.h прототип
Описание biosmemory при помощи прерывания BIOS 0x12 получает значение, равное размеру оперативной па- мяти. Это значение не включает видео-память, рас- ширенную память или дополнительную память.
Возвращаемое biosmemory возвращает размер оперативной памяти значение в блоках по 1К.
Переносимость biosmemory поддерживается только на компьютерах IBM PC или совместимых с ними.
Пример:
#include
#include
int main(void) { int memory_size; memory_size = biosmemory(); /* возвращает до 640К */ printf("Оперативная память: %dK\n",memory_size); return 0; }

Biosprin

biosprint
Функция Ввод/вывод на принтер при помощи BIOS.
Синтаксис #include
Файл, содержащий bios.h прототип
Описание biosprint выполняет различные операции с принтером, определяемым аргументом port, при по- мощи прерывания BIOS 0x17,
Значение аргумента port = 0 соответствует LPT1; port = 1 соответствует LPT2 и т.д..
Значение аргумента cmd может быть одним из следу- ющих: 0 печать символа, содержащегося в abyte 1 инициализация порта принтера 2 считывание статуса принтера Значение аргумента abyte может быть пре- делах от 0 до 255.
Возвращаемое Значение, возвращаемое функцией biosprint в любой значение из описанных выше операций, представляет собой статус принтера, получаемый посредством операции "ИЛИ" со следующими битовыми значениями: Бит 0 0x01 Таймаут устройства; Бит 3 0x08 Ошибка ввода/вывода Бит 4 0x10 Включено; Бит 5 0x20 Конец бумаги; Бит 6 0x40 Подтверждение приема; Бит 7 0x80 Не занято.
Переносимость biosprint поддерживается только на компьютерах IBM PC или совместимых с ними.
Пример:
#include
#include
#include
int main(void) { #define STATUS 2 /* команда получить статус принтера */ #define PORTNUM 0 /* LPT1 */
int status,abyte = 0;
printf("Пожалуйста, выключите принтер. Для продолжения нажмите любую клавишу\n"); getch(); status = biosprint(STATUS,abute,PORTNUM); if(status & 0x01) printf("Таймаут устройства\n"); if(status & 0x08) printf("Ошибка ввода/вывода\n"); if(status & 0x10) printf("Включено\n"); if(status & 0x20) printf("Конец бумаги\n"); if(status & 0x40) printf("Подтверждение приема\n"); if(status & 0x80) printf("Не занято\n"); return 0; }

Biostime

biostime
Функция Считывание или установка таймера BIOS.
Синтаксис #include
long biostime(int cmd, long newtime);
Файл, содержащий bios.h прототип
Описание biostime либо считывает, либо устанавливает таймер BIOS. Этот таймер считывает время, прошед- шее с полуночи, в тиках (приблизительно в 18.2 тика в секунду). biostime использует прерывание BIOS 0x1A.
Если аргумент cmd = 0, biostime возвращает теку- щее значение таймера. При cmd = 1 значение тайме- ра устанавливается в аргументе newtime с типом long.
Возвращаемое Когда функция biostime работает в режиме чтения значение таймера BIOS (cmd = 0), то возвращаемое значение представляет собой текущее значение таймера.
Переносимость biostime поддерживается только на компьютерах IBM PC или совместимых с ними.
Пример:
#include
#include
#include
int main(void) { long bios_time; clrscr(); cprintf("Число тиков, с полуночи:\r\n"); cprintf("Число секунд, с полуночи:\r\n"); cprintf("Число минут, с полуночи:\r\n"); cprintf("Число часов, с полуночи:\r\n"); cprintf("\r\nДля выхода нажмите любую клавишу"); while(!kbhit()) { bios_time = biostime(0L); gotoxy(50,1); cprintf("%lu",bios_time); gotoxy(50,2); cprintf("%lu",bios_time/CLK_TCK); gotoxy(50,3); cprintf("%lu",bios_time/CLK_TCK/60); gotoxy(50,4); cprintf("%lu",bios_time/CLK_TCK/3600); } return(0); }

Brk

brk
Функция Изменяет размещение сегмента данных в памяти.
Синтаксис #include
char *sbrk(int incr);
Файл, содержащий alloc.h прототип
Описание Функция sbrk добавляет к завершающему значению incr байт, и соответственно выделяет память. incr может быть и отрицательным, в этом случае объем выделенной памяти уменьшается.
В случае если для выделения памяти недостаточно свободного места, sbrk завершается по ошибке и не производит никаких действий.
Возвращаемое При успешном завершении sbrk возвращает старое значение значение. При ошибке, sbrk возвращает -1 и гло- бальной переменной errno присваивает значение:
ENOMEM - Недостаточно памяти.
Переносимость sbrk доступна в системах UNIX.
Смотрите также
Пример:
#include
#include
int main(void) { printf("Изменение выделенного объема памяти с помощью sbrk\n"); printf("Перед вызовом sbrk свободны %lu байт.\n", (unsigned long)coreleft()); sbrk(1000); printf("После вызова sbrk свободны %lu байт.\n", (unsigned long)coreleft()); return 0; }

Bsearch

bsearch
Функция Двоичный поиск в массиве.
Синтаксис #include
void * bsearch(const void * key, const void * base, size_t nelem, size_t width, int (*fcmp) (const void *, const void *));
Файл, содержащий stdlib.h прототип
Описание bsearch осуществляет поиск по таблице (массиву) из элементов nelem и возвращает адрес первого элемента в таблице, который соответствует шаблону поиска. Если соответствие не найдено, то bsearch возвращает значение, равное 0.
Тип size_t определяется как unsigned int.
- nelem задает количество элементов таблицы; - width задает количество байтов в каждом элементе таблицы.
Функция сравнения fcmp вызывается с двумя аргу- ментами: elem1 и elem2. Каждый аргумент указывает на сравниваемый элемент. Функция сравнения срав- нивает элементы, адресуемые указателями (*elem1 и *elem2) и возвращает целое значение, зависящее от результатов сравнения.
Для bsearch *fcmp возвращает следующее значение: < 0 *elem1 < *elem2 ==0 *elem1 == *elem2 > 0 *elem1 > *elem2
Возвращаемое bsearch возвращает адрес первого элемента таблицы, значение соответствующего ключу поиска. Если такого соот- ветствия не найдено, то возвращается значение, равное 0.
Переносимость Поддерживается в системах UNIX и определена в ANSI C.
Смотрите также
Пример:
#include
#include
#define NELEMS(arr) (sizeof(arr) / sizeoff(arr[0])) int numarray[] = {123, 145, 512, 627, 800, 993}; int numeric(int *pl, int *p2) { return(*p1 - *p2); } int lookup(int key) { int *itemptr; /* явное преобразование необходимо для исключения ошибки несовпадения типов, воз- никающей во время компиляции */ itemptr = bsearch(&key, numarray, NELEMS(numarray), sizeof(int), (int (*)(const void *,const void *))numeric); return (itemptr != NULL); } int main(void) { if(lookup(512)) printf("В таблице есть элемент 512\n"); else printf("В таблице нет элемента 512\n"); return 0; }

Описание функций Си

Cabs

cabs
Функция Абсолютное значение комплексного числа.
Синтаксис #include
double cabs(struct complex z);
Файл, содержащий math.h прототип
Описание cabs - это макрокоманда, которая вычисляет абсо- лютное значение комплексного числа z. z является структурой типа complex; структура определена в math.h следующим образом:
struct complex { double x,y; };
где x есть действительная часть, а y - мнимая часть.
Вызов cabs эквивалентен вызову sqrt с действи- тельной и мнимой частью z, как показано ниже:
sqrt(z.x * z.x + z.y + z.y)
При использовании С++, можно воспользоваться ти- пом complex, определенном в файле complex.h, и функцией abs.
Возвращаемое cabs возвращает абсолютное значение z типа double. значение При переполнении cabs возвращает HUGE_VAL и уста- навливет errno в
ERANGE - Результат превышает допустимые пределы.
Управление ошибками для cabs можно изменить с по- мощью функции matherr.
Переносимость cabs поддерживается на системах UNIX.
Смотрите также
Пример:
#include
#include
int main() { struct complex z; double val; z.x=2.0; z.y=1.0; val = cabs(z); printf("Абсолютное значение от (%.2lfi %.2lfj) = %.2lf",z.x, z.y,val); return 0; }

Calloc

calloc
Функция Выделяет оперативную память.
Синтаксис #include
void * calloc(size_t nitems, size_t size);
Файл, содержащий stdlib.h,alloc.h прототип
Описание calloc обеспечваеит доступ к памяти heap. heap доступен для динамического распределения блоков памяти переменной длины. Многие структуры данных, например, деревья и списки, используют распределение памяти heap.
Все пространство памяти между концом сегмента данных и верхушкой программного стека доступно для использования в моделях памяти small (tiny, small, medium), кроме небольшой области в самой верхней части стека. Это пространство необходимо для роста стека прикладной программы и плюс не- большая часть, используемая DOS.
В моделях памяти типа large (compact, large, huge) все пространство за границей программного стека до конца физической памяти доступно для heap.
calloc выделяет блок памяти размером nitems x size. Блок обнуляется. Если размер блока превыша- ет 64К то нужно использовать функцию farcalloc.
Возвращаемое calloc возвращает указатель на выделенный блок. значение calloc возвращает NULL, если недостаочно памяти для выделения нового блока, или nitems или size равны 0.
Переносимость Поддерживается в системах UNIX и определена в ANSI C. Описана в Керниган и Риччи.
Смотрите также
Пример:
#include
#include
#include
int main(void) { char *str = NULL; /* выделить память для строки */ str = calloc(10,sizeof(char)); if(str) { /* скопировать в строку "Hello" */ strcopy(str,"Hello"); /* вывести строку */ printf("Строка : %s\n",str); /* освободить память */ free(str); } else { printf("Недостаточно памяти\n"); } return(0); }

Ceil

ceil
Функция Округление.
Синтаксис #include
double ceil(double x);
Файл, содержащий math.h прототип
Описание ceil находит наименьшее целое число, не меньшее x.
Возвращаемое ceil возвращает найденное число (тип double). значение
Переносимость Поддерживается в системах UNIX и определена в ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { double number = 123.54; double down,up; down = floor(number); up = ceil(number); printf("Исходное число:%5.21f\n",number); printf("Округленное вниз :%5.21f\n",down); printf("Округленное вверх :%5.21f\n",up); return 0; }

Cgets

cgets
Фукция Cчитывает строку с консоли.
Синтаксис #include
char *cgets(char *str);
Файл, содержащий conio.h прототип
Описание cgets считывает символьную строку с консоли и сохраняет ее (и длину строки) в буфере, указывае- мом параметром str.
cgets считывает символы до тех пор, пока не вст- ретится комбинация CR/LF (возврат каретки/перевод строки), или пока не будет считано указанное чис- ло символов. Если cgets считала комбинацию CR/LF, она заменяет их на \0 (нулевой ограницитель стро- ки).
До вызова cgets аргумент str[0] должен быть уста- новлен на максимальную длину считываемой строки. При возврате str[1] содержит количество считанных символов. Символы хранятся, начиная с str[2], и заканчиваются нулевым символом. Итак, аргумент str должен иметь размер, по крайней мере, str[0] плюс 2 байта.
Возвращаемое При успешном завершении cgets возвращает указатель значение на str[2].
Переносимость Эта функция поддерживается только на компьютерах IBM PC или совместимых с ними.
Смотрите также
Пример:
#include
#include
main() { char buffer[83]; char *p; /* место под 81 символ */ buffer[0] = 81; p = cgets(buffer); printf("\ncgets считала %d символов: \"%s\"\n",buffer[1], p); printf("Возвращается указатель %p, buffer[2] на %p\n",p,&buffer); /* место под 5 символов и завершающий 0 */ buffer[0] = 6; printf("Введите несколько символов\n"); p = cgets(buffer); printf("\ncgets считала %d символов: \"%s\"\n,buffer[1], p); printf("Возвращается указатель %p, buffer[2] на %p\n",p,&buffer); return 0; }

Chdir

chdir
Функция Изменяет текущую директорию.
Синтаксис #include
int chdir(const char * path);
Файл, содержащий dir.h прототип
Описание Функция chdir делает директорию, определяемую ар- гументом path, текущей рабочей директорией. Аргу- мент path должен определять существующую директо- рию.
Спецификация устройства также может задаваться в аргументе path, например,
chdir("a:\\tc")
но изменяется только текущая директория на этом устройстве; само активное устройство не изменяет- ся.
Возвращаемое При успешном завершении функция chdir выдает зна- значение чение 0. Иначе, функция возвращает значение -1, а errno присваивается следующее значение:
ENOENT - Маршрут или имя файла не найдены.
Переносимость Функция chdir поддерживается на системах UNIX.
Смотрите также
Пример:
#include
#include
#include
char old_dir[MAX_DIR]; char new_dir[MAX_DIR]; int main(void) { if(getcurdir(0,old_dir)) { perror("getcurdir()"); exit(1); } printf("Текущая директория: \\%s\n",old_dir); if(chdir("\\"); { perror("chdir()"); exit(1); } if(getcurdir(0,new_dir)) { perror("getcurdir()"); exit(1); } printf("Теперть текущая директория: \\%s\n",new_dir); if(chdir(old_dir); { perror("chdir()"); exit(1); } return 0; }

Chmod

chmod
Функция Изменяет режим доступа к файлу.
Синтаксис #include
int chmod(const char * path, int amode);
Файл, содержащий io.h прототип
Описание Функция chmod уставливает режим доступа к файлу, заданному аргументом path в соответствии с мас- кой, содержащейся в аргументе amode. Аргумент path представляет собой адресный указатель сим- вольной строки; *path является первым сиволом этой строки.
amode может содержать одну или обе символьные константы S_IWRITE и S_IREAD (определенные в фай- ле sys\stat.h).
--------------------------------------------------- Значение, amode Режим доступа --------------------------------------------------- S_IWRITE Разрешение на запись S_IREAD Разрешение на чтение S_IREAD|S_IWRITE Разрешение на чтение и запись ---------------------------------------------------
Возвращаемое При успешном завершении изменения режима доступа к значение файлу функция chmod возвращает значение 0. Иначе, chmod возврашает значение -1.
В случае ошибки errno присваивается одно из сле- дующих значений:
ENOENT - Маршрут или имя файла не найдены; EACCES Отказ доступа.
Переносимость Функция chmod поддерживается на системах UNIX.
Смотрите также
Пример:
#include
#include
#include
void make_read_only(char *filename); int main(void) { make_read_only("NOTEXIST.FIL"); make_read_only("MYFILE.FIL"); return0 0; } void make_read_only(char *filename) { int stat; stat = chmod(filename, S_IREAD); if (stat) printf("Не могу сделать %s только для чтения\n", filename); else print(" %s теперь имеет атрибут только для чтения\n", filename); } Результат

Chsize

chsize
Функция Изменяет размер файла.
Синтаксис #include
int chsize(int handle, long size);
Файл, содержащий io.h прототип
Описание chsize изменяет размер файла, связанного с дескриптором handle. Она может уменьшить или уве- личить файл относительно его начального размера в зависимости от значения аргумента size.
Режим, в котором открывается файл, должен иметь разрешение на запись.
Если chsize увеличивает файл, то к нему присоеди- няются нулевые символы (\0). Если файл уменьшается, то данные за новым признаком конца файла теряют- ся.
Возвращаемое При успешном завершении chsize возвращает 0. При значение ошибке возвращается -1, а переменной errno присваивается одно из следующих значений:
EACCES - Отказ доступа; EBADF - Неверный номер файла; ENOSPC - UNIX - не для DOS.
Переносимость chsize уникальна для DOS.
Смотрите также
Пример:
#include
#include
#include
int main(void) { int handle; char buf[11] = "0123456789"; /* создать текстовый файл из 10 байт */ handle = open("DUMMY.FIL",O_CREAT); write(handle,buf,strlen(buf)); /* обрезать файл до 5 байт */ chsize(handle,5); /* закрыть файл */ close(handle); return 0; }

Circle

circle
Функция Рисует окружность заданного радиуса с центром в точке с координатами (x,y).
Синтаксис #include
void far circle(int x,int y,int radius);
Файл, содержащий graphics.h прототип
Описание circle рисует окружность текущим цветом с цент- ром в точке (x,y) и радиусом radius.
Замечание. Параметр linestyle не оказывает воз- действие при построении дуг, окружностей, элипсов и секторов. Используется только параметр thickness.
Если на экране окружности не выглядят круглыми, измените корректирующий фактор характеристическо- го отношения.
Возврощаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддерживающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int midx,midy; int radius = 100;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx() / 2; midy = getmaxy() / 2; setcolor(getmaxcolor(1));
/* рисует окружность */ circle(midx,midy,radius);
/* очистить */ getch(); closegraph(); return 0; }

Cleardev

cleardevice
Функция Очищает графический экран.
Синтаксис #include
void far cleardevice(void);
Файл, содержащий graphics.h прототип
Описание cleardevice стирает (это значит - зарисовыва- ет текущим цветом фона) весь графический экран и переносит CP (текущую позицию) в начало экрана (0,0).
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int midx,midy;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx() / 2; midy = getmaxy() / 2; setcolor(getmaxcolor(1));
/* установка выравнивания текста */ settextjustify(CENTER_TEXT,CENTER_TEXT); /* вывод на экран сообщения */ outtextxy(midx,midy,"Для очистки экрана нажмите любую клавишу); /* ожидание нажатия клавиши */ getch(); /* очистка экрана */ cleardevice(); /* вывести другое сообщение */ outtextxy(midx,midy,"Для завершения нажмите любую клавишу"); /* очистка */ getch(); closegraph(); return 0; }

Clearerr

clearerr
Функция Сброс индикации ошибок.
Синтаксис #include
void clearerr(FILE * stream);
Файл, содержащий stdio.h прототип
Описание clearerr сбрасывает в 0 ошибку и признак конца файла указанного потока. После того, как был ус- тановлен признак ошибки, потоковые операции возв- ращают состояние ошибки до тех пор, пока не будет сделано обращение к clearerr или rewind.
Признак конца файла сбрасывается при каждой опе- рации ввода.
Возвращаемое Нет. значение
Переносимость clearerr поддерживается на системах UNIX и опреде- лена в ANSI C.
Смотрите также
Пример:
#include
int main(void) { FILE *fp; char ch; /* открыть файл для записи */ fp = open("DUMMY.FIL","w"); /* вызвать ошибочное состояние */ ch = getc(fp); if(ferror(fp) { /* вывести сообщение об ошибке */ printf("Ошибка чтения из DUMMY.FIL\n"); /* Сбросить признаки конца файла и ошибки */ clearerr(fp); } fclose(fp); return 0; }

Clearvie

clearviewport
Функция Очищает текущую область просмотра.
Синтаксис #include
void far clearviewport(void);
Файл, содержащий graphics.h прототип
Описание clearviewport очищает текущую область просмотра экрана и переносит CP ( текущую позицию ) в (0,0), относительно области просмотра.
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
#define CLIP_ON 1 /* активизации клиппирования в области просмотра */
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int ht;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } setcolor(getmaxcolor(1)); ht = textheight("W"); /* сообщение выводится в область просмотра, по умолчанию это весь экран */ outtextxy(0,0,"

Clock

clock
Функция Определяет время процессора.
Синтаксис #include
clock_t clock(void);
Файл, содержащий time.h прототип
Описание clock может быть использована для определения интервала времени между двумя событиями.
Для определения времени в секундах, значение, возвращаемое функцией clock, должно быть поделено на значение макро CLK_TCK.
Возвращаемое Функция clock возвращает время процессора значение с момента начала выполнения программы. Если время процессора недоступно или его значение не может быть интерпретировано, то функция возвращает зна- чение -1.
Переносимость clock совместима с ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { clock_t start, end; start = clock(); /* Тестируемые операторы */ delay(2000); end = clock(); printf("The time was: %f\n", (end - start) / CLK_TCK); return 0; }

Close

close
Функция Закрывает файл.
Синтаксис #include
int close(int handle);
Файл, содержащий io.h прототип
Описание close закрывает файл, связанный с дескриптором handle. Аргумент handle обозначает дескриптор файла, присваиваемый ему при вызове функций _creat, creat, creatnew, creattemp, dup, dup2, _open или open.
Примечание. Эта функция не записывает символ Ctrl-Z в конец файла. Если вы хотите завершить файл этим символом, его следует явно вывести.
Возвращаемое При успешном завершении close значение возвращают значение 0. Иначе возвращается значе- ние -1.
Если аргумент handle не является дескриптором от- крытого файла, это приводит к неудачному заверше- нию операции. errno получает следующее значение:
EBADF - Неверный номер файла.
Переносимость close поддерживается в системах UNIX.
Смотрите также
Пример:
#include
#include
#include
int main(void) { int handle; char buf[11] = "0123456789"; /* создать файл содержащий 10 байт */ handle = open("NEW.FIL",O_CREAT); if(handle > -1) { write(handle,buf,strlen(buf)); /* закрыть файл */ close(handle); } else { printf("Ошибка, при открытии файла\n"); } return 0; }

Closegra

closegraph
Функция Прекращает работу графической системы.
Синтаксис #include
void far closegraph(void)
Файл, содержащий graphics.h прототип
Описание closegraph освобождает всю память,выделен- ную под графическую систему, затем восстанавлива- ет экран в режим, который был до вызова initgraph. (Графическая система освобождает па- мять, а также драйверы, шрифты и внешние буферы посредством вызова _graphfreemem).
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int x,y;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ }
x = getmaxx()/2; y = getmaxy()/2; /* вывод сообщения */ settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(x,y,"Для завершения работы графической системы нажмите любую клавишу"); /* ожидание нажатия клавиши */ getch(); /* закрытие графической системы */ closegraph();
printf("Мы опять в текстовом режиме\n"); printf("Для завершения нажмите любую клавишу\n"); getch(); return 0; }

Clreol

clreol
Функция Удаляет до конца строки в текстовом окне.
Синтаксис #include
void clreol(void);
Файл, содержащий conio.h прототип
Описание clreol удаляет все символы от позиции курсора до конца строки в текущем текстовом окне без переме- щения курсора.
Возвращаемое Нет. значение
Переносимость clreol поддерживается только на компьютерах IBM PC или совместимых с ними.
Смотрите также
Пример:
#include
int main(void) { clrscr(); cprintf("Функция CLREOL обнуляет все символы, начиная\r\n"); cprintf("от позиции курсора, до конца строки, внутри \r\n"); cprintf("текущего текстового окна, без перемещения курсора.\r\n"); cprintf("Для продолжения нажмите любую клавишу..."); gotoxy(14,4); getch(); clreol(); getch(); return 0; }

Clrscr

clrscr
Функция Очищает окно в текстовом режиме.
Синтаксис #include
void clrscr(void);
Файл, содержащий conio.h прототип
Описание clrscr очищает текущее текстовое окно и перемеща- ет курсор в верхний левый угол экрана (в позицию 1,1).
Возвращаемое Нет. значение
Переносимость clrscr поддерживается только на компьютерах IBM PC или совместимых с ними.
Смотрите также
Пример:
#include
int main(void) { clrscr(); for(i=0;i

Complex

complex
Функция Создает комплексные числа.
Синтаксис #include
complex complex(double real,double imag);
Файл, содержащий complex.h прототип
Описание Создает комплексное число из данных вещественной и мнимой части. Если параметр imag опускается, то мнимая часть считается равной 0. complex - это конструктор класса С++ complex, который определен в complex.h. Другие функции, которые также позво- ляют работать с complex, приведены в разделе "Смотри также". Некоторые из этих стандартных функций переопределяются в Для работы с комплексными версиями этих функций требуется С++. Если вы не желаете работать с С++, а предпочитае- те с С, то вам доступны только конструкции типа и возвращающие абсолютное значение комплексного числа. Они определены в В кроме этого переопределяются операции +, -, *, /, + - * / и ! Это позволяет использовать с комплексными числами обычные операции. В выражениях вы можете исполь- зовать вместе с комплексными числами, целые, ве- щественные и другие числовые типы. Опереторы по- токового ввода/вывода и переопределены для комплексных чисел, так же как и для остальных чи- сел.
Возвращаемое Комплексное число с данными вещественной и мнимой значение частями.
Переносимость Комплексные функции требуют С++ и поэтому непере- носимы. Поскольку мы следуем С++ AT&T версии 2.0, то вы можете попробовать комплексные функции на других компиляторах, придерживающихся этого же стандарта.
Смотрите также , 0,
Пример:
#include
#include
int main(void) { double x = 3.1, y=4.2; complex z = complex(x,y); cout

Conj

conj
Функция Возвращает комплексное сопряжение комплексного числа.
Синтаксис #include
complex conj(complex x);
Файл, содержащий complex.h прототип
Описание conj(z) аналогично complex(real(z), -imag(z)).
Возвращаемое Возвращает комплексно-сопряженное к данному число. значение
Смотри также
Пример:
#include
#include
int main(void) { double x = 3.1, y=4.2; complex z = complex(x,y); cout

Coreleft

coreleft
Функция Возвращает размер неиспользуемой оперативной памяти.
Синтаксис В моделях данных tiny, small, medium: #include
unsigned coreleft(void);
В моделях данных compact, large, huge: #include
unsigned long coreleft(void);
Файл, содержащий alloc.h прототип
Описание coreleft возвращает размер неиспользуемой оперативной памяти. Выводятся различные значения в зависимости от модели памяти.
Возвращаемое В малых моделях памяти coreleft возвращает значение количество неиспользуемой памяти между вершиной heap и стеком. В больших моделях памяти, она воз- вращает объем памяти между самым верхним выделен- ным блоком и концом оперативной памяти.
Переносимость coreleft уникальна для DOS.
Смотрите также Пример:
#include
#include
int main(void) { printf("Разница между самым верхним выделенным блоком и \n"); printf("вершиной heap равна %lu байт",(unsigned long)coreleft()); return 0; }

Cos

cos
Функция Вычисляет косинус.
Синтаксис Вещественная версия Комплексная версия #include #include
double cos(double x); complex cos(complex x);
Файл, содержащий Вещественная версия Комплексная версия прототип math.h complex.h
Описание cos возвращает косинус введенного значения. Угол задается в радианах.
Косинус комплексного числа определен следующим об- разом:
cos(z)=(exp(i*z)+exp(-i*z))/2
Возвращаемое Вещественная версия cos возвращает значение в диа- значение пазоне от -1 до 1. Управление ошибками для этой функции можно изменить с помощью функции matherr.
Переносимость cos поддерживается в системах UNIX и определена в ANSI C. Комплексная версия требует С++ и неперено- сима.
Смотрите также ,
Пример:
#include
#include
int main(void) { double result; double x = 0.5; result = cos(x); printf("Косинус от %1f равен %1f\n",x,result); return 0; }

Cosh

cosh
Функция Вычисляет гиперболический косинус.
Синтаксис Вещественная версия Комплексная версия #include #include
double cosh(double x); complex cosh(complex x);
Файл, содержащий Вещественная версия Комплексная версия прототип math.h complex.h
Описание cosh возвращает гиперболический косинус введенного значения. (e^x+e^-x)/2
Гиперболический косинус комплексного числа опре- делен следующим образом:
cosh(z)=(exp(z)+exp(-z))/2
Возвращаемое cosh возвращает гиперболический косинус аргумента. значение В случае переполнения cosh возвращает значение HUGE_VAL с сответствующим знаком, и errno уста- навливается в ERANGE.
Обработку ошибок для этой функции можно изменить с помощью функции matherr.
Переносимость cosh поддерживается в системах UNIX и определена в ANSI C. Комплексная версия требует С++ и скорее всего непереносима.
Смотрите также ,
Пример:
#include
#include
int main(void) { double result; double x = 0.5; result = cosh(x); printf("Гиперболический косинус от %1f равен %1f\n",x,result); return 0; }

Country

country
Функция Возвращает информацию, зависимую от конкретной страны.
Синтаксис #include
struct country * country(int xcode, struct country * cp);
Файл, содержащий dos.h прототип
Описание Функция country определяет, каким образом должна быть сформирована такая информация, как дата, время, денежная единица. Значения, устанавливае- мые данной функцией, зависят от используемой вер- сии системы DOS.
Если параметр cp имеет значение -1, текущий госу- дарственный стандарт устанавливается соответст- венно значению аргумента xcode, который должен быть ненулевым. В остальных случаях структура country, указываемая адресной ссылкой cp, запол- няется информацией зависимой от государственных стандартов текущей страны (если xcode установлен в 0), или страны, определяемой аргументом xcode.
Структура country определена следующим образом:
struct contry { int co_date; /* Формат даты */ char co_curr[5]; /* Символ валюты */ char co_thsep[2]; /* Разделитель тысяч */ char co_desep[2]; /* Десятичный разделитель */ char co_dtsep[2]; /* Разделитель даты */ char co_tmsep[2]; /* Разделитель времени */ char co_currstyle; /* Изображение валюты */ char co_digits; /* Число значащих цифр */ /* в написании валюты */ char co_time; /* Формат времени */ long co_case; /* Выбор регистра */ char co_dasep[2]; /* Разделитель данных */ char co_fill[10]; /* Заполнитель */ };
Формат даты в переменной co_date имеет значение - 0 для стандарта США (месяц, день, год) - 1 для европейского стандарта (день, месяц, год) - 2 для японского стандарта (год, месяц, день).
Режим изображения денежных единиц задается пере- менной co_currstyle следующим образом: 0 Символ валюты предшествует значению без про- белов между символом и числом. 1 Символ валюты следует за значением без пробе- лов между числом валюты и символом. 2 Символ валюты предшествует значению с пробе- лом после символа. 3 Символ валюты следует за числом с одним про- белом перед символом.
Возвращаемое Функция country возвращает в качестве значения значение адресный указатель cp. В случае ошибки возвра- щается NULL.
Переносимость country поддерживается только на DOS версии 3.0 и выше.
Пример:
#include
#include
#define USA 0
int main(void) { struct country country_info; country(USA,&country_info); printf("Символ валюты США : %s\n",country_info.co_curr); return 0; }

Cprintf

cprintf
Функция Осуществляет форматированный вывод на экран.
Синтаксис #include
int cprintf(const char *format[,argument,...]);
Файл, содержащий conio.h прототип
Описание cprintf получает набор аргументов, применяет к каждому аргументу спецификацию формата, содержа- щуюся в строке формата с указателем format, и вы- водит отформатированные данные на экран в текущее текстовое окно. Число аргументов и спецификаций должно быть одинаковым. Строка пишется или напрямую в видео-память, или через функции BIOS, в зависимости от значения глобальной переменной directvideo. Описание спецификации формата приведено в функции printf. В отличие от функций fprintf и printf, cprintf не преобразует символы перевода строки (\n) в последовательность перевода каретки/перевода строки (\r\n).
Возвращаемое cprintf возвращает количество выведенных символов. значение
Переносимость cprintf поддерживается только на компьютерах IBM PC или совместимых с ними.
Смотрите также переменная),
Пример:
#include
int main(void) { /* очистить экран */ clrscr(); /* создать текстовое окно */ window(10,10,80,25); /* вывести в него некоторый текст */ cprintf("Привет !!!\r\n"); /* ждать нажатия клавиши */ getch(); return 0; }

Cputs

cputs
Функция Выводит строку на экран.
Синтаксис #include
int cputs(const char * str);
Файл, содержащий conio.h прототип
Описание cputs выводит строку str, заканчивающуюся нулем, в текущее текстовое окно. К строке не присоединяет- ся символ новой строки.
Строка выводится напрямую в память экрана при по- мощи вызова BIOS, в зависимости от значения в directvideo.
В отличие от функции puts, cputs не преобразует символы перевода строки (\n) в последовательность перевода каретки/перевода строки (\r\n).
Возвращаемое cputs возвращает последний выведенный символ. значение
Переносимость cputs поддерживается только на компьютерах IBM PC или совместимых с ними.
Смотрите также переменная),
Пример:
#include
int main(void) { /* очистить экран */ clrscr(); /* создать текстовое окно */ window(10,10,80,25); /* вывести в него некоторый текст */ cputs("Вывод в окно \r\n"); /* ждать нажатия клавиши */ getch(); return 0; }

Creat

creat
Функция Создает новый файл или перезаписывает существующий.
Синтаксис #include
int creat(const char * path, int amode);
Файл, содержащий io.h прототип
Описание Функция creat создает новый файл или подготавлива- ет для перезаписи существующий файл, имя которого находится в аргументе path. amode применяется только для заново создаваемых файлов.
Файл создается в режиме, указываемом в глобальной переменной _fmode (O_TEXT или O_BINARY).
Если файл уже существует и установлен атрибут за- писи, функция creat усекает файл до длины 0 бай- тов, оставляя неизменными атрибуты файлов. Если существующий файл имеет атрибут "только чтение", вызов функции creat потерпит неудачу и файл оста- нется неизменным.
Вызов функции creat проверяет только бит S_IWRITE в слове режима доступа amode. Если данный бит ра- вен 1, файл имеет разрешение на запись. Если бит равен 0, то для файла разрешено только чтение. Все остальные атрибуты DOS устанавливаются равны- ми нулю.
amode может принимать одно из следующих значений (определенных в файле sys\stat.h):
--------------------------------------------------- Значение amode Режим доступа --------------------------------------------------- S_IWRITE разрешение на запись S_IREAD разрешение на чтение S_IREAD|S_IWRITE разрешение на чтение и запись ---------------------------------------------------
Примечание. В DOS разрешение на запись влечет за собой разрешение на чтение.
Возвращаемое При успешном завершении возвращается неотрицатель- значение ное целое число - новый дескриптор файла; иначе возвращается значение -1.
В случае ошибки errno принимает одно из следующих значений:
ENOENT - Маршрут или имя файла не найдены EMFILE - Слишком много открытых файлов EACCES - Отказ доступа
Переносимость creat поддерживается в системах UNIX.
Смотрите также , переменная),
Пример:
#include
#include
#include
#include
int main(void) { int handle; char buf[11] = "0123456789";
/* изменить режим с текстового в двоичный */ _fmode = O_BINARY; /* создать двоичный файл для чтения и записи */ handle = creat("DUMMY.FIL",S_IREAD|S_IWRITE); /* записать в файл 10 байт */ write(handle,buf,strlen(buf)); /* закрыть файл */ close(handle); return 0; }

Creatnew

creatnew
Функция Создает новый файл.
Синтаксис #include
int creatnew(const char * path, int mode);
Файл, содержащий io.h прототип
Описание creatnew идентична функции _creat, за исключением того, что если файл существует, то creatnew возв- ращает ошибку и не изменяет файл.
Аргумент mode в creatnew может быть одной из сле- дующих констант (определенных в dos.h):
FA_DRONLY Только чтение FA_HIDDEN Скрытый файл FA_SYSTEM Системный файл
Возвращаемое При успешном завершении creatnew возвращает дескрип- значение тор нового файла, неотрицательное число; иначе воз- вращается -1.
В случае ошибки errno принимает одно из следующих значений:
EEXIST - Файл уже существует ENOENT - Маршрут или имя файла не найдены EMFILE - Слишком много открытых файлов EACCES - Отказ доступа
Переносимость creatnew уникальна для DOS 3.0 и не работает на более ранних версиях DOS.
Смотрите также переменная),
Пример:
#include
#include
#include
#include
int main(void) { int handle; char buf[11] = "0123456789";
/* попытка создать несуществующий файл */ handle = creatnew("DUMMY.FIL",0); if(handle == -1) printf("DUMMY.FIL уже существует\n"); else { printf("DUMMY.FIL успешно создан\n"); write(handle,buf,strlen(buf)); close(handle); } return 0; }

Creattem

creattemp
Функция Создает уникальный файл в директории, указываемой в маршруте.
Синтаксис #include
int creattemp(char * path, int attrib);
Файл, содержащий io.h прототип
Описание Файл создается в режиме, указываемом в глобальной переменной _fmode (O_TEXT или O_BINARY).
path является именем маршрута, заканчивающимся символом (\). Уникальное имя файла выбирается в ди- ректории, указываемой в аргументе path. Имя ново- го созданного файла хранится в строке path. path должен быть достаточной длины для размещения име- ни результирующего файла. Этот файл автоматически не удаляется при завершении программы.
creattemp берет аргумент attrib - слово атрибутов DOS. Файл всегда открывается в двоичном режиме. При успешном создании файла указатель файла уста- навливается на начало этого файла. Файл открыва- ется сразу для чтения и записи.
Аргумент attrib в creattemp может быть одной из следующих констант (определенных в dos.h):
FA_DRONLY Только чтение FA_HIDDEN Скрытый файл FA_SYSTEM Системный файл
Возвращаемое При успешном завершении возвращается дескрип- значение тор нового файла, неотрицательное число; иначе воз- вращается -1.
В случае ошибки errno принимает одно из следующих значений:
ENOENT - Маршрут или имя файла не найдены EMFILE - Слишком много открытых файлов EACCES - Отказ доступа
Переносимость creattemp уникальна для DOS 3.0 и не работает на более ранних версиях DOS.
Смотрите также переменная),
Пример:
#include
#include
#include
int main(void) { int handle; char pathname[128]; strcpy(pathname,"\\"); /* создать уникальный файл в корневом каталоге */ handle = creattemp(pathname,0); printf("Был создан файл %s\n",pathname); close(handle); return 0; }

Cscanf

cscanf
Функция Выполняет форматированный ввод с консоли.
Синтаксис #include
int cscanf(char * format[,address,...]);
Файл, содержащий conio.h прототип
Описание cscanf считывает с консоли и просматривает набор вводимых полей по одному символу. Затем каждое поле форматируется в соответствии со спецификаци- ей формата, передаваемой функции cscanf в строке формата format. Наконец, cscanf помещает отформа- тированный ввод по адресам, следующим за аргумен- том format, и отображает введенные символы на эк- ране. Количество спецификаций формата, адресов и вводимых полей должно быть одинаковым. Специфика- ция формата приведена в описании функции scanf. По многим причинам cscanf может прекратить скани- рование определенного поля до его нормального за- вершения (символ пробела), или вообще завершить ввод. Описание этих причин вы найдете в описании функции scanf.
Возвращаемое cscanf возвращает число успешно введенных, значение преобразованных и сохраненных полей; возвращаемое значение не включает просмотренные, но не сохра- ненные поля. Если ни одно поле не было сохранено, то возвращается значение 0.
Если cscanf пытается считать конец файла, то воз- вращается значение EOF.
Переносимость cscanf уникальна для DOS.
Смотрите также
Пример:
#include
int main(void) { char string(80); /* очистить экран */ clrscr(); /* запросить ввод от пользователя */ cprintf("Введите строку:"); /* считать строку */ cscanf("%s",string); /* вывести введенную строку */ cprintf("Вы ввели следующую строку: %s",string); return 0; }

Ctime

ctime
Функция Преобразовывает дату и время в строку.
Синтаксис #include
char * ctime(const time_t * time);
Файл, содержащий time.h прототип
Описание Функция ctime преобразует время, адресный указа- тель которого находится в аргументе time (это значение возвращается функцией time) в 26-сим- вольную строку следующего вида, заканчивающуюся символами новой строки и нуля:
Mon Nov 21 11:31:54 1983\n\0
Все поля имеют постоянную ширину.
Глобальная переменная timezone (тип long) должна содержать разницу в секундах между временем по Гринвичу (GMT) и местным стандартным временем (по стандарту PST timezone равна 8*60*60). Глобальная переменная daylight имеет ненулевое значение только, если применяется стандартное преобразова- ние летнего времени для USA.
Возвращаемое Функция ctime возвращает указатель на символьную значение строку, содержащую дату и время. Данная строка является статической переменной, которая переза- писывается при каждом вызове функции ctime.
Переносимость ctime поддерживается на системах UNIX и определена в ANSI C.
Смотрите также переменная),
переменная),
Пример:
#include
#include
int main(void) { time_t t; t = time(NULL); printf("Сейчас: %s\n",ctime(&t)); return 0; }

Ctrlbrk

ctrlbrk
Функция Устанавливает программу обработки Ctrl-Break.
Синтаксис #include
void ctrlbrk(int(*handler)(void));
Файл, содержащий dos.h прототип
Описание Функция ctrlbrk устанавливает новую функцию обра- ботки прерываний, адресный указатель которой на- ходится в переменной handler. Вектор прерывания 0x23 модифицируется для вызова названной функции.
Названная функция не может вызываться непосредст- венно. Функция ctrlbrk вызывает программу обра- ботки прерываний системы DOS, которая, в свою очередь, вызывает названную функцию.
Функция обработки прерываний может выполнять лю- бое количество операций и системных вызовов. Дан- ная функция не должна возвращаться непосредствен- но в программу; программа обработки прерывания возвращает 0 для завершения текущей программы, в противном случае программа продолжает свою рабо- ту.
Возвращаемое Функция ctrlbrk не возвращает никакого значения. значение
Переносимость Функция уникальна для системы DOS.
Смотрите также
Пример:
#include
#include
#define ABORT 0 int c_break(void) { print("Нажато Control-Break. Выполнение программы завершается.\n"); return(ABORT); }
main() { ctrlbrk(c_break); for (;;) { printf("Цикл ...\n"); } }
Вывод:
Цикл ... Цикл ... Цикл ... ^C Нажато Control-Break. Выполнение программы завершается.
delay
Функция Замораживает выполнение программы на интервал в микросекундах.
Синтаксис #include
void delay (unsigned milliseconds);
Файл, содержащий dos.h прототип
Описание При вызове функции delay выполнение программы приостанавливается на время, определяемое парамет- ром milliseconds. Теперь отпала необходимость в калибровочном вызове delay. delay отсчитывает ин- тервал в миллисекундах.
Возвращаемое Нет. значение
Переносимость Эта функция работает только на компьютерах совмес- тимых с IBM PC.
Смотрите также
Пример:
/* выдает звук с частотой 440 Гц в течение 500 миллисекунд */
#include
int main(void) { sound(440); delay(500); nosound(); return 0; }

Описание функций Си

Daylight

daylight
Функция Определяет, должна ли производиться установка лет- него времени.
Синтаксис extern int daylight;
Объявлено в time.h
Описание daylight используется функциями времени и даты. Устанавливается функциями tzset, ftime, localtime в "1" для летнего времени, "0" для стандартного времени.

Delline

delline
Функция Удаляет строку в текстовом окне.
Синтаксис #include
void delline(void);
Файл, содержащий conio.h прототип
Описание delline удаляет строку, в которой находится курсор и сдвигает все строки ниже данной на одну вверх. delline работает внутри текущего активного окна.
Возвращаемое Нет. значение
Переносимость Эта функция работает только на компьютерах совмес- тимых с IBM PC.
Смотрите также
Пример:
#include
int main(void) { clrscr(); cprintf("Функция DELLINE удаляет строку, содержащую курсор\r\n"); cprintf("и перемещает все строки, лежащие ниже ее, на одну\r\n"); cprintf("строку вверх. DELLINE работает в текущем активном \r\n"); cprintf("текстовом окне. Для продолжения нажмите клавишу..."); gotoxy(1,2); /* переместить курсор на вторую строку */ getch(); delline(); getch(); return 0; }

Detectgr

detectgraph
Функция Определяет графический драйвер и графический режим при проверке аппаратного обеспечения.
Синтаксис #include
void far detectgraph (int far*graphdriver, int far *graphmode);
Файл, содержащий graphics.h прототип
Описание detectgraph определяет ваш системный гра- фический адаптер и выбирает режим, который обеспе- чивает самое высокое разрешение для этого адапте- ра. Если графический адаптер не обнаружен, *graphdriver устанавливается в -2 и graphresult будет также возвращать -2(grNotDetected).
*graphdriver - целое, которое определяет исполь- зуемый графический драйвер. Вы можете задать его значение, используя константу перечисляемого типа graphics_drivers, определенную в graphics.h и при- веденную в следующей таблице.
__________________________________________ graphics_drivers константа численное значение __________________________________________ DETECT 0 (запрашивает автоопределе- ние драйвера) CGA 1 MCGA 2 EGA 3 EGA64 4 EGAMONO 5 IBM8514 6 HERCMONO 7 ATT400 8 VGA 9 PC3270 10 __________________________________________
*graphmode - целое, которое определяет на- чальный графический режим (если *graphdriver не равен DETECT, *graphmode устанавливается в наивыс- шее разрешение, допустимое для данного драйвера) Вы можете задать значение *graphmode, используя константу перечисляемого типа graphics_modes, оп- ределенную в graphics.h и показанную в следующей таблице: -------------------------------------------------------------- Графическ. graphics Знач. Колонок Палитра Страниц драйвер _modes * столбцов ------------------------------------------------------------- CGA CGAC0 0 320 x 200 C0 1 CGAC1 1 320 x 200 C1 1 CGAC2 2 320 x 200 C2 1 CGAC3 3 320 x 200 C3 1 CGAHI 4 640 x 200 2цвета 1
MCGA MCGAC0 0 320 x 200 C0 1 MCGAC1 1 320 x 200 C1 1 MCGAC2 2 320 x 200 C2 1 MCGAC3 3 320 x 200 C3 1 MCGAMED 4 640 x 200 2цвета 1 MCGAHI 5 640 x 480 2цвета 1
EGA EGALO 0 640 x 200 16цветов 4 EGAHI 1 640 x 350 16цветов 2
EGA64 EGA64LO 0 640 x 200 16цветов 1 EGA64HI 1 640 x 350 4 цвета 1

EGA- EGAMONOHI 3 640 x 350 2 цвета 1* MONO EGAMONOHI 3 640 x 350 2 цвета 2**

HERC HERCMONOHI 0 720 x 348 2 цвета 2

AT400 ATT400C0 0 320 x 200 C0 1 ATT400C1 1 320 x 200 C1 1 ATT400C2 2 320 x 200 C2 1 ATT400C3 3 320 x 200 C3 1 ATT400MED 4 640 x 200 2 цвета 1 ATT400HI 5 640 x 400 2 цвета 1

VGA VGALO 0 640 x 200 16 цветов 2 VGAMED 1 640 x 350 16 цветов 2 VGAHI 2 640 x 380 16 цветов 1

PC3270 PC3270HI 0 720 x 350 2 цвета 1

IBM8514 IBM8514HI 0 640 x 480 256 цветов IBM8514LO 0 1024 x 768 256 цветов

* 64К на карте EGAMONO ** 256К на карте EGAMONO -------------------------------------------------------------- Замечание. Основная причина вызова непосредствен- но detectgraph состоит в переопределении графи- ческого режима , который detectgraph рекомендовал initgraph.

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

Переносимость Функция уникальна для Turbo C++. Эта функция пригодна только для компьютеров IBM PC и совмес- тимых с ними, оснащенных дисплейными адаптерами, поддерживающими графический режим.

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

Пример:

#include

#include

#include

#include

/* Имена различных графических адаптеров */ char *gname[] = { "требуется определение", "CGA", "EGA", "EGA с 64K", "монохромный EGA", "IBM 8514", "Hercules монохромный", "AT&T 6300 PC", "VGA", "IBM 3270" };

int main(void) { /* используется для определения графического адаптера */ int graphdriver, gmode, errorcode; /* определение адаптера */ detectgraph(&graphdriver,&gmode,""); /* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } /* вывести полученную информацию */ clrscr(); printf("Установлена плата: %s",gname[graphdriver]); printf("Для завершения нажмите любую клавишу..."); getch(); return 0; }

Diftime

diftime
Функция Вычисляет разницу между первым и вторым временем.
Синтаксис #include
double difftime(time_t time2, time_t time1);
Файл, содержащий time.h прототип
Описание difftime вычисляет время в секундах между time1 и time2.
Возвращаемое Возвращает результат вычислений типа double. значение
Переносимость Совместима с UNIX и определена в ANSI C.
Смотрите также (переменная), (переменная).
Пример:
#include
#include
#include
#include
int main(void) { time_t first,second; clrscr(); first = time(NULL); /* получить системное время */ delay(2000); /* задержка на 2000 миллисекунд */ second = time(NULL);/* опять получить системное время */ printf("Разница равна %f секунд",difftime(second,first); getch(); return 0; }

Directvi

directvideo
Функция Флаг управления видео выводом.
Синтаксис extern int directvideo;
Объявлено в conio.h
Описание directvideo управляет выводом на консоль (из cputs, например) напрямую через видео RAM (directvideo=1) или через вызов ROM BIOS (directvideo=0). Значением по умолчанию является directvideo=1 (консольный вывод идет напрямую че- рез видео RAM). Чтобы использовать directvideo=1, видео контроллер должен быть идентичным по отно- шению к IBM. Установка directvideo=0 позволяет выводить на консоль на любом компьютере, совмес- тимом по IBM BIOS.

Disable

disable
Функция Запрещает прерывания.
Синтаксис #include
void disable(void);
Файл, содержащий dos.h прототип
Описание Данная макрокоманда разработана с целью обеспе- чения программистов гибким средством контроля над прерываниями на физическом уровне.
Макрокоманда disable делает прерывания невозможны- ми. Разрешено только прерывание NMI с внешнего ус- тройства (немаскируемое прерывание).
Возвращаемое Нет. значение
Переносимость Данная макрокоманда уникальна для архитектуры 8086.
Смотрите также
Пример:
/* Замечание. Это программа обработки прерывания. Вы не сможете откомпилировать эту программу с включенной проверкой переполнения стека (Test Stack Overflow - On) и получить правильно работающую программу. */
#include
#include
#include
#define INTR 0X1C /* прерывание таймера */
void interrupt (*oldhandler)(void);
int count=0;
void interrupt handler(void) { /* запрет других прерываний во время обработки этого */ disable(); /* увеличение глобального счетчика */ count++; /* разрешение прерываний после обработки */ enable(); /* вызов старой программы обработки */ oldhandler(); } int main(void) { /* сохранить старый вектор */ oldhandler = getvect(INTR); /* записать новый вектор */ setvect(INTR,handler); /* цикл, пока счетчик не достигнет 20 */ while(count < 20) printf("счетчик = %d\n",count); /* восстановить старый вектор */ setvect(INTR,oldhandler); return 0; }

Div

div
Функция Производит деление двух целых и возвращает частное и остаток.
Синтаксис #include
div_t div(int numer, int denom);
Файл содержащий stdlib.h прототип
Описание div делит два целых и возвращает частное и остаток в структуре типа div_t. numer - делимое, denum - делитель. Структура div_t определена в stdlib.h следующим образом:
typedef struct { int quot; /* частное */ int rem; /* остаток */ } div_t;
Возвращаемое div возвращает структуру типа div_t, содержащую значение частное и остаток от деления.
Переносимость div совместима с ANSI C.
Смотрите также
Пример:
#include
#include
div_t x;
int main(void) { x = div(10,3); printf("10 div 3 = %d, ост = %d",x.quot,x.rem); return 0; } Вывод: 10 div 3 = 3 ост = 1

Dosexter

dosexterr
Функция Получает дополнительный код ошибки DOS.
Cинтаксис #include
int dosexterr(struct DOSERROR *eblkp);
Файл, содержащий dos.h прототип
Описание Данная функция заполняет структуру DOSERROR с адрес- ным указателем eblkp расширенной информацией об ошибке, получаемой при неудачном завершении сис- темного вызова DOS. Структура DOSERROR определена следующим образом:
struct DOSERROR { int exterror; /* дополнительная ошибка */ char class; /* класс ошибки */ char action; /* действия */ char locus; /* местонахождение ошибки */ };
Значения данная структура получает с помощью вызо- ва функции DOS 0x59. Значение exterror, равное ну- лю, обозначает, что предшествующий вызов системы MS DOS завершился без ошибки.
Возвращаемое Функция dosexterr возвращает значение переменной значение exterror.
Переносимость Функция уникальна для системы MS DOS версии 3.X, поэтому не может быть использована в более ранних версиях системы DOS.
Пример:
#include
#include
int main(void) { FILE *fp; struct DOSERROR info; fp = fopen("perror.dat","r"); if(!fp) perror("Не могу открыть файл для чтения"); dosexterror(&info); printf("Дополнительная информация об ошибке DOS:\n"); printf(" дополнительная ошибка: %d\n",info.exterror); printf(" класс ошибки: %d\n",info.class); printf(" действия: %d\n",info.action); printf(" местонахождение ошибки: %d\n",info.locus); return 0; }

Dostouni

dostounix
Функция Преобразует дату и время в формат системы UNIX.
Синтаксис #include
long dostounix(struct date *d,struct dostime *t);
Файл, содержащий dos.h прототип
Описание Функция dostounix конвертирует дату и время, полу- чаемые функциями getdate и gettime в формат систе- мы UNIX. Аргумент d является адресным указателем структуры date, а аргумент t указывает на структу- ру dostime, содержащие корректную информацию о времени и дате системы DOS.
Возвращаемое Функция dostounix возвращает текущее время значение системы UNIX: количество секунд, начиная с 1 янва- ря 1970, 00:00:00 (время по Гринвичу).
Переносимость функция уникальна для системы DOS.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { time_t t; struct time d_time; struct date d_date; struct tm *local;
getdate(&d_date); gettime(&d_time); t = dostounix(&d_date,&d_time); local = localtime(&t); printf("Время и дата: %s\n",asctime(local)); return 0; }

Drawpoly

drawpoly
Функция Рисует контур многоугольника.
Синтаксис #include
void far drawpoly (int numpoints, int far *polypoints);
Файл, содержащий graphics.h прототип
Описание drawpoly рисует +а многоугольник ,имеющий numpoints точек, используя текущие тип линии и цвет.
*polypoints указывает на последовательность из (numpoints x 2) целых чисел. Каждая пара чисел x и y является координатами вершины многоугольника.
Замечание. Для построения замкнутой фигуры, имею- щей n вершин, необходимо задавать n+1 координату, где n-ная координатная пара равна 0-ой.
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Эта функция пригодна только для компьютеров IBM PC и совмести- мых с ними, оснащенных дисплейными адаптерами, поддерживающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int maxx,maxy; /* наш многоугольник */ int poly[10];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } maxx = getmaxx(); maxy = getmaxy();
poly[0] = 20; /* первая точка */ poly[1] = maxy/2;
poly[2] = maxx-20; /* 2 */ poly[3] = 20;
poly[4] = maxx-50; /* 3 */ poly[5] = maxy-20;
poly[6] = maxx/2; /* 4 */ poly[7] = maxy/2;
poly[8] = poly[0]; /* возврат в исходную т. */ poly[9] = poly[1];
/* рисует многоугольник */ drawpoly(5,poly);
/* очистка */ getch(); closegraph(); return 0; }

Dup

dup
Функция Дублирует дескриптор файла.
Синтаксис #include
int dup(int handle);
Файл, содержащий io.h прототип
Описание Функция dup возвращает дескриптор файла, который по следующим позициям совпадает с оригинальным дескриптором:
- тот же самый открываемый файл или устройство;
- тот же самый адресный указатель файла (то есть изменение одного адресного указателя приводит к изменению другого);
-тот же самый метод доступа (чтение, запись, чте- ние/запись).
Переменная handle получают значения при вызове функций creat,_creat,_open, open, dup, dup2.
Возвращаемое При успешном завершении функция dup возвращает це- значение лое неотрицательное число, обозначающее соответст- вующий дескриптор файла; в противном случае функ- ция dup возвращает значение -1.
При возникновении ошибки глобальная переменная errno получает одно из следующих значений:
EMFILE - Слишком много открытых файлов. EBADF - Неверный номер файла.
Переносимость Функция dup поддерживается в системах UNIX.
Смотрите также ,
Пример:
#include
#include
#include
#include
void flash(FILE *stream);
int main(void) { FILE *fp; char msg[] = "Тестовый пример"; /* создание файла */ fp = fopen("DUMMY.FIL,"w"); if(fp) { /* записать в файл данные */ fwrite(msg,strlen(msg),1,fp); clrscr(); printf(" Для сброса буферов файла на диск нажмите клавишу "); getch(); /* Сброс буферов файда на диск без его закрытия */ flush(fp); printf("Буфера записаны, для завершения нажмите клавишу."); getch(); } else { printf("Ошибка при открытии файла\n"); } return 0; } void flash(FILE *stream) { int duphandle; /* сброс внутреннего буфера TC */ fflash(stream); /* сдублировать дескриптор файла */ duphandle = dup(fileno(stream)); /* закрыть второй дескриптор, для сброса внутренних буферов DOS */ close(duphandle); }

dup2

Функция Дублирует дескриптор файла.

Синтаксис #include

int dup2(int oldhandle, int newhandle);

Файл, содержащий io.h прототип

Описание Функция dup2 возвращают дескриптор файла, который по следующим позициям совпадает с оригинальным дескриптором:

- тот же самый открываемый файл или устройство;

- тот же самый адресный указатель файла (то есть изменение одного адресного указателя приводит к изменению другого);

-тот же самый метод доступа (чтение, запись, чте- ние/запись).

dup2 создает новый дескриптор со значением newhandle Если файл связанный с дескриптором newhandle открыт, то при вызове dup2 он закрывает- ся.

Переменная newhandle и oldhandle - это дескрипторы файлов, и получают значения при вызове функций creat,_creat,_open, open, dup, dup2.

Возвращаемое При успешном завершении функция dup2 возвращает 0, значение в противном случае функция dup2 возвращает значе- ние -1.

При возникновении ошибки глобальная переменная errno получает одно из следующих значений:

EMFILE - Слишком много открытых файлов. EBADF - Неверный номер файла.

Переносимость Функция dup поддерживается на системах UNIX, кроме system III.

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

Пример:

#include

#include

#include

#include

#include

#define STDOUT 1

int main(void) { int fptr,oldstdout; char msg[] = "Тестовый пример"; /* создание файла */ fptr = open("DUMMY.FIL",O_CREAT|O_RDWR,S_IREAD|S_IWRITE); if(fptr) { /* создать дополнительный дескриптор для stdout */ oldstdout = dup(STDOUT); /* перенаправить стандартный вывод в файл, путем дублирования его дескриптора */ dup2(fptr,STDOUT); /* закрыть файл */ close(fptr); /* было перенаправлено в DUMMY.FIL */ write(STDOUT,msg,strlen(msg)); /* восстановить исходный дескриптор stdout */ dup2(oldstdout,STDOUT); /* закрыть второй дескриптор stdout */ close(oldstdout); } else { printf("Ошибка при открытии файла. \n"); } return 0; }

Описание функций Си

Ecvt

ecvt
Функция Преобразует число с плавающей точкой в строку символов.
Синтаксис #include
char * ecvt(double value, int ndig, int *dec, int * sign);
Файл, содержащий stdlib.h прототип
Описание Функция ecvt конвертирует значение value в строку с нулевым окончанием из ndig цифр и возвращает ад- ресный указатель строки. Позиция десятичной точки относительно начала строки косвенным образом хра- нится в параметре decpt (отрицательное значение decpt означает левый отсчет полученных цифр). В самой строке десятичной точки нет.Если знак ре- зультата отрицательный, слово, на которое указыва- ет адресный указатель sign, не равно 0, иначе оно равно 0. Младшие разряды округляются.
Возвращаемое Функция ecvt возвращает адресный указатель на значение статическую строку, чье содержимое перезаписывает- ся при каждом вызове функций.
Переносимость Функция поддерживается на системах UNIX. Она не определена в стадарте ANSI C, и поэтому мы не ре- комендуем использовать ее при написании переноси- мых программ.
Смотрите также
Пример:
#include
#include
int main(void) { char *string; double value; int dec, sign; int ndig = 10;
value = 9.876; string = ecvt(value,ndig,&dec,&sign); printf("Строка = %s dec = %d sign = %d\n",string,dec,sign); value = -123.45; ndig = 15; string = ecvt(value,ndig,&dec,&sign); printf("Строка = %s dec = %d sign = %d\n",string,dec,sign); value = 0.6789e5; ndig = 5; string = ecvt(value,ndig,&dec,&sign); printf("Строка = %s dec = %d sign = %d\n",string,dec,sign); return 0; }

Egread

egread
Функция Считывает значения сегментных регистров.
Синтаксис #include
void segread(struct SREGS *segp);
Файл, содержащий dos.h прототип
Описание Функция segread помещает текущие значения сег- ментных регистров в структуру, адресуемую пара- метром segp.
Данный вызов предлагается использовать совместно с функциями intdosx и int86x.
Возвращаемое Нет. значение
Переносимость Функция уникальна для процессоров семейства 8086.
Смотрите также 6,6
Пример:
#include
#include
int main(void) { struct SREGS segs; segread(&segs); printf("Содержимое сегментных регистров: \n"); printf("CS: %X DS: %X\n",segs.cs, segs.ds); printf("ES: %X SS: %X\n",segs.es, segs.ss); return 0; }

Ellipse

ellipse
Функция Рисует эллиптические дуги.
Синтаксис #include
void far ellipse (int x,int y,int stangle, int endangle,int xradius int yradius);
Файл, содержащий graphics.h прототип
Описание ellpise рисует эллиптическую дугу с центром в точке с координатами (x,y), горизонтальной и вертикальной осями радиусом xradius и yradius со- ответственно,текущим цветом. Дуга рисуется от угла stangle до угла endangle.Если stangle равен 0 и endangle равен 360,функция arc нарисует полный эл- липс.
Угол для arc отсчитывается против часовой стрелки, где 0 градусов соответствует 3 часам на цифербла- та, 90 градусов - 12 часам и т.д.
Замечание. Параметр linestyle не оказывает воздей- ствие при построении дуг, окружностей, элипсов и секторов.Используется только параметр thickness.
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. ellipse работает только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддерживающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int midx,midy; int stangle = 0,endangle = 360; int xradius = 100,yradius = 50;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx() / 2; midy = getmaxy() / 2; setcolor(getmaxcolor(1));
/* рисует эллипс */ ellipse(midx,midy,stangle,endangle,xradius,yradius);
/* очистка */ getch(); closegraph(); return 0; }

Enable

enable
Функция Разрешает прерывания.
Синтаксис #incdude
void enable(void);
Файл, содержащий dos.h прототип
Описание enable предназначена для гибкого управления прерыва- ниями.
enable - макрокоманда разрешает прерывания.
Возвращаемое Нет. значение
Переносимость enable уникальна для систем 80х86.
Смотрите также
Пример:
#include
void interrupt (*oldhandler)(void);
int count=0;
void interrupt handler(void) { /* запрет других прерываний во время обработки этого */ disable(); /* увеличение глобального счетчика */ count++; /* разрешение прерываний после обрабртки */ enable(); /* вызов старой программы обработки */ } int main(void) { /* сохранить старый вектор */ oldhandler = getvect(0x1c); /* записать новый вектор */ setvect(0x1c,handler); /* цикл, пока счетчик не достигнет 20 */ while(count < 20); /* восстановить старый вектор */ setvect(0x1c,oldhandler); return 0; }

Environ

environ
Функция Доступ к переменным окружения DOS.
Синтаксис extern char * environ[];
Объявлено в dos.h
Описание environ является массивом указателей на символьные строки; используется для доступа и из- менения переменных окружения DOS. Каждая строка массива имеет следующую форму: envvar = varvalue где envvar - это имя переменной окружения (такой как PATH), а varvalue - это строковое значение, которое присваивается переменной envvar (такое как C:\BIN;C:\DOS). Строка varvalue может быть пустой. Когда программа начинает выполняться, атрибуты операционной среды MS-DOS передаются непосредст- венно в программу. Заметим, что envp, третий ар- гумент функции main, равен первоначальному значе- нию переменной environ. Массив environ может использоваться функцией getenv; однако функция putenv является единствен- ной функцией, которая может изменять, удалять и добавлять содержимое массива environ. Хотя и су- ществует возможность изменять размеры и переме- щать массив окружения процесса, переменная environ автоматически регулируется таким образом, что она всегда указывает на массив.

Eof

eof
Функция Определяет, достигнут ли конец файла.
Синтаксис #include
int eof(int handle);
Файл, содержащий io.h прототип
Описание Функция eof определяет, достигнут ли конец фай- ла, связанного с дескриптором handle.
Возвращаемое Если текущая позиция является концом файла, функ- значение ция eof возвращает значение 1; в противном случае значение 0. При возникновении ошибки возвращается значение -1, и глобальная переменная errno получа- ет значение:
EBADF - Неверный номер файла.
Переносимость eof уникальна для DOS.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { FILE *temp_file; int handle; char msg[] = "Тестовый пример"; char ch; /* создать уникальный временный файл */ if((temp_file=tmpfile()) == NULL) { perror("Открытие файла:"); exit(1); } /* получить дескриптор данного файла */ handle = fileno(temp_file); /* записать в файл данные */ write(handle,msg,strlen(msg)); /* переместить указатель в начало файла */ lseek(handle,0l,SEEK_SET); /* считывать данные до появления конца файла */ do { read(handle,&ch,1); printf("%c",ch); } while(!eof(handle); /* закрыть временный файл */ fclose(temp_file); return 0; }

Errno

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 происходит ошибка, текущий код ошибки DOS присваи- вается переменной _doserrno. Переменная errno по- лучает параллельное значение кода, соответствующее операционной системе UNIX.
errno. Где бы ни произошла ошибка при системном вызове, переменная errno указывает на тип ошибки. Иногда errno и _doserrno бывают идентичны. В ос- тальных случаях errno не содержит действительный код ошибки DOS, который содержится в _doserrno. При некоторых ошибках их код может присваиваться только переменной errno, но не _doserrno.
sys_errlist. Чтобы обеспечить лучший контроль за выдачей сообщений об ошибках, существует массив строк сообщений, хранящийся в sys_errlist. errno может использоваться в качестве индекса на мас- сив, где каждый индекс соответствует требуемой строке. Строка не содержит не одного символа пе- рехода на новую строку.
sys_nerr. Данная переменная представляет собой число строк сообщений об ошибках в переменной sys_errlist.
Следующая таблица дает мнемонические значения для сообщений, хранящихся в переменной sys_errlist. --------------------------------------------------------------------- Мнемомика Значение --------------------------------------------------------------------- E2BIG Список аргументов слишком длинный. EACCES Отказ доступа. EBADF Неверный номер файла. ECONTR Блоки памяти разрушены. ECURDIR Попытка удаления текущего директория. EDOM Ошибка области определения. EEXIST Файл уже существует. EFAULT Неизвестная ошибка. EINVACC Неверный код доступа. EINVAL Неверный аргумент. EINVDAT Неверные данные. EINVDRV Неверная спецификация устройства. EINVENV Неверное окружение. EINVFMT Неверный формат. EINVFNC Неверный номер функции. EINVMEM Неверный адрес блока памяти. EMFILE Слишком много открытых файлов. ENMFILE Больше нет файлов. ENODEV Не существует такого устройства. ENOENT Не существует такого файла или директории. ENOEXEC Ошибка формата. ENOFILE Не существует такого файла или директории. ENOMEM Не хватает памяти. ENOPATH Маршрут не найден. ENOTSAM Не такое же устройство. ERANGE Результат превышает допустимые пределы. EXDEV Перекрестная связь между устройствами. EZERO Ошибка 0. ---------------------------------------------------------------------

Следующий список дает мнемонику действительных кодов ошибок DOS, которые присваиваются перемен- ной _doserrno. Значения в _doserrno могут содер- жать, или не содержать, (через errno) эквивалент- ные строки сообщений об ошибках в sys_errlist. --------------------------------------------------------------------- Мнемоника Код ошибки DOS --------------------------------------------------------------------- E2BIG Неверное окружение. EACCESS Отказ доступа. EACCESS Неверный доступ. EACCESS Текущий директорий. EBADF Неверный дескриптор. EFAULT Зарезервировано. EINVAL Неверные данные. EINVAL Неверная функция. EMFILE Слишком много открытых файлов. ENOENT Нет такого файла или директрория. ENOEXEC Неверный формат. ENOMEM Разрушен Mcb. ENOMEM Выход за пределы памяти. ENOMEM Неверный блок. EXDEV Неверное устройство. EXDEV Не такое же устройство. ---------------------------------------------------------------------

Пользуйтесь документом "Справочное руководство программиста по DOS". В нем вы найдете подробное описание кодов ошибок DOS.

Пример:

#include

#include

extern char *sys_errlist[];

main() { int i=0; while(sys_errlist[i++]) printf("%s\n",sys_errlist[i]); return 0; }

Execl

execl, execle,execlp, execv,execve, execvp,execvpe
Функция Функции, загружающие и запускающие другие программы.
Синтаксис int execl(char * pathname, char * arg0, arg1, ..., argn, NULL); int execle(char * pathname, char * arg0, arg1, ..., argn, NULL, char ** envp); int execlp(char * pathname, char * arg0, arg1, ..., argn, NULL); int execlpe(char * pathname, char * arg0, arg1, ..., argn, NULL, char ** envp); int execv(char * pathname, char * argv[]); int execve(char * pathname, char * argv[], char ** envp); int execvp(char * pathname, char * argv[]); int execvpe(char * pathname, char * argv[], char ** envp);
Файл, содержащий process.h прототип
Описание Семейство функций exec... загружает и запускает другие программы, известные как "дочерние" процес- сы. Если вызов функции exec... завершается успеш- но, "дочерний" процесс накладывается на "родитель- ский" процесс; причем должно быть достаточно памя- ти для загрузки и выполнения "дочернего" процесса.
pathname - это имя файла вызываемого "дочернего" процесса. Функции exec... производят поиск pathname, пользуясь стандартным алгоритмом системы DOS:
- нет расширения имени файла и нет точки; в таком случае производится поиск точного имени файла, ес- ли такое имя не найдено, добавляется расширение .com и поиск продолжается. Если и такого файла не найдено, то добавляется расширение .exe и поиск продолжается;
- расширение имени присутствует - производится по- иск по точному имени файла;
- присутствует точка - производится поиск только имени файла без расширения.
Суффиксы l, v, p и e, добавляемые к имени семейст- ва exec... обозначают, что данная функция будет работать с некоторыми особенностями:
p- определяет, что функция будет искать "дочернюю" программу в директориях, определяемых переменной среды DOS PATH. Без суффикса p поиск будет произ- водиться только в рабочем каталоге. Если параметр path не содержит маршрута, то поиск производится в текущей директории, а затем по маршрутaм, опреде- ляемым переменной окружения PATH;

l- показывает, что адресные указатели (arg0, arg1, ..., argn) передаются, как отдельные аргументы. Обычно суффикс l употребляется, когда число пере- даваемых аргументов заранее вам известно;

v- показывает, что адресные указатели (arg[0], arg[1],...arg[n]) передаются, как массив указате- лей. Обычно, суффикс v используется, когда пере- даeтся переменное число аргументов;

e- показывает, что "дочернему" процессу может быть передан аргумент envp, который позволяет выбирать среду "дочернего" процесса. Без суффикса e "дочер- ний" процесс унаследует среду "родительского" про- цесса.

Каждая функция семейства exec... должна иметь один из двух суффиксов, специфицирующих аргументы (либо l, либо v). Суффиксы определения маршрута доступа (PATH) и унаследования операционной среды (p и l) являются необязательными.

Например:

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

-execvpe представляет собой функцию семейства exec..., которая передает массив указателей аргу- ментов, подсоединяет маршрут доступа PATH для по- иска "дочернего" процесса и применяет аргумент envp для выбора среды "дочернего" процесса.

Функция семейства exec... должна передавать "до- чернему" процессу хотя бы один аргумент (arg0 или argv[0]). Данный аргумент, по соглашению, предс- тавляет собой копию pathname. (Использование дру- гих значений для нулевого аргумента не будет ошиб- кой).

В системах DOS версий 3.X "дочерний" процесс может получить аргумент pathname; в более ранних версиях "дочерний" процесс не может использовать значение нулевого аргумента (arg0 или argn[0]).

При использовании суффикса l, арг0 обычно указыва- ет на pathname, а arg1, ..., argn указывают на строки символов, которые формируют новый список аргументов. Завершающий NULL, следующий за argn, обозначает конец списка. При использовании суффик- са e список назначенной среды передается с помощью аргумента envp. Данный аргумент является массивом из элементов типа char*. Каждый элемент указывает на символьную строку с нулевым окончанием формы:


envvar = value , где

envvar- имя переменной среды, а value- значение символьной строки, которая присваивается каждой переменной envvar. Последним элементом в массиве envp[] является адресный нуль NULL. Когда значени- ем envp[0] является NULL, "дочерний" процесс на- следует назначения среды "родительского" процесса.

Общая длина arg0+ arg1+...+argn (или arg[0]+ arg[1]+...+arg[n]), включая пробелы, разделяющие аргументы, должна быть меньше 128 байтов. Нулевые окончания не считаются. При вызове функции exec... любые открытые файлы остаются открытыми и в "до- чернем" процессе.

Возвращаемое При успешном завершении функции exec... не возвра- значение щают никакого значения. При возникновении ошибки функции exec... возвращают значение -1, а глобаль- ная переменная errno получает одно из следующих значений:

E2BIG - Слишком длинный список аргументов; EACCES - Отказ доступа; EMFILE - Слишком много открытых файлов; ENOENT - Маршрут доступа (PATH) или имя файла не найдены; ENOEXEC - Ошибка формата EXEC; ENOMEM - Не хватает памяти.

Переносимость exec... уникальна для DOS.

Смотрите также: ..,

Пример:

/* CHILD.C Программа для всех примеров */

#include

#include

main(int argc, char * argv[]) { int i; printf("Запущен дочерний процесс ...\n"); printf("%s\n",getenv("PATH")); for (i=0; i

#include

#include

#include

int main(int argc,char *argv[]) { int loop; printf("%s работает...\n\n",argv[0]); if(argc == 1) /* есть ли еще аргументы */ { printf("%s запускает сама себя опять...\n",argv[0]); execl(argv[0],argv[0],"ONE","TWO","THREE",NULL); perror("EXEC:"); exit(1); } printf("%s вызвана с аргументами:\n",argv[0]); for(loop = 1;loop

#include

#include

#include

#include

int main(int argc,char *argv[]) { int loop; char *new_env[] = {"TELYING",NULL};

printf("%s работает...\n\n",argv[0]); if(argc == 1) /* есть ли еще аргументы */ { printf("%s запускает сама себя опять...\n",argv[0]); execle(argv[0],argv[0],"ONE","TWO","THREE",NULL,new_env); perror("EXEC:"); exit(1); } printf("%s вызвана с аргументами:\n",argv[0]); for(loop = 1;loop


#include

#include

#include

int main(int argc,char *argv[]) { int loop; printf("%s работает...\n\n",argv[0]); if(argc == 1) /* есть ли еще аргументы */ { printf("%s запускает сама себя опять...\n",argv[0]); execlp(argv[0],argv[0],"ONE","TWO","THREE",NULL); perror("EXEC:"); exit(1); } printf("%s вызвана с аргументами:\n",argv[0]); for(loop = 1;loop

#include

#include

#include

#include

#include

void main(int argc,char *argv[],char **envp) { printf("Запуск CHILD с arg1, arg2 ...\n"); execlpe("CHILD.EXE","CHILD.EXE","arg1","arg2",NULL,envp); perror("Ошибка EXEC"); exit(1); }

#include

#include

#include

#include

#include

#include

void main(int argc,char **argv) { printf("Запуск CHILD с arg1, arg2 ...\n"); execv("CHILD.EXE",argv); perror("Ошибка EXEC"); exit(1); }

#include

#include

#include

#include

#include

#include

void main(int argc,char **argv,char **envp) { printf("Запуск CHILD с arg1, arg2 ...\n"); execve("CHILD.EXE",argv,envp); perror("Ошибка EXEC"); exit(1); }

#include

#include

#include

#include

#include

#include

void main(int argc,char **argv) { printf("Запуск CHILD с arg1, arg2 ...\n"); execvp("CHILD.EXE",argv); perror("Ошибка EXEC"); exit(1); }

#include

#include

#include

#include

#include

#include

int main(int argc,char **argv,char **envp) { printf("Запуск CHILD с arg1, arg2 ...\n"); execvpe("CHILD.EXE",argv,envp); perror("Ошибка EXEC"); exit(1); }

Exit

exit
Функция Прекращает выполнение программы.
Синтаксис #include
void exit(int status);
Файл, содержащий process.h, stdlib.h прототип
Описание Функция exit прекращает вызываемый процесс. Перед выходом из процесса все файлы закрываются, записы- вается буферный вывод (ждущий вывода) и вызываются зарегистрированные "функции выхода" (объявленные в функции atexit).
В любом случае, для вызываемого процесса обеспечи- вается аргумент status, который представляет собой статус выхода для данного процесса. Обычно, значе- ние, равное нулю, используется для обозначения нормального выхода из процесса,а ненулевое значе- ние обозначает какие-либо ошибки. Оно устанавлива- ется одним из следующих:
EXIT_SUCCESS - Нормальное завершение EXIT_FAILURE - Ненормальное завершение. Сообщает операционной системе, что программа завершилась с ошибкой.
Возвращаемое Нет. значение
Переносимость Функция exit совместима с системой UNIX и опреде- лена в стандарте ANSI C.
Смотрите также Функции .., .., и
Пример:
#include
#include
#include
int main(void) { int status; printf("Нажмите клавишу 1 или 2\n"); status = getch(); exit(status-'0'); return 0; /* эта точка не достигается */ }

Exp

exp
Функция Функция экспоненты; возвращает значение е в сте- пени x.
Синтаксис Вещественная версия Комплексная версия #include #include
double exp(double x); complex exp(complex x);
Файл, содержащий Вещественная версия Комплексная версия прототип math.h complex.h
Описание Функция exp вычисляет функцию экспоненты e^x;
Экспонента комплексного числа определена следующим образом:
exp(x+yi) = exp(x)(cos(y)+i sin(y))
Возвращаемое exp возвращает e^x. значение
Иногда аргументы функции exp выдают результат, вы- зывающий переполнение или невычисляемый. Когда верное значение вызывает переполнение, функция exp возвращает значение HUGE_VAL. При чрезмерно боль- шом результате глобальной переменной errno присва- ивается значение:
ERANGE - результат превышает допустимые пределы.
При малом результате возвращается 0.0 и errno не изменяется.
Обработку ошибок для exp можно изменить с помощью matherr.
Переносимость Функции поддерживаются на системах UNIX и стан- дартом ANSI C.
Смотрите также Функции 0, 0,
Пример:
#include
#include
int main(void) { double result; double x = 4.0; result = exp(x); printf("'e' в степени %1f (e^%1f) = %1f\n",x,x,result); return 0; }

Описание функций Си

Fabs

fabs
Функция Возвращает абсолютное значение числа с плавающей точкой.
Синтаксис #include
double fabs(double x);
Файл, содержащий math.h прототип
Описание fabs вычисляет абсолютное значение х и возвращает его как double.
Возвращаемое fabs возвращает абсолютное значение х. значение
Переносимость fabs доступна в UNIX и поддерживается стандартом ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { float number = -1234.0; printf("число:%f, абсолютное значение %f\n",number,fabs(number)); return 0; }

Farcallo

farcalloc
Функция Выделяет блок памяти в глобальном heap'e.
Синтаксис #include
void far * farcalloc(unsigned long nunits, unsigned long unitsz);
Файл, содержащий alloc.h прототип
Описание Функция farcalloc распределяет память в глобальном heap'e под массив, состоящий из nunits элементов, причем каждый элемент длиной unitsz байтов.
При распределении памяти глобальном heap'e помните следующее:
- может быть распределена вся память с произволь- ной выборкой (ЗУПВ);
- могут быть размещены блоки, размером более 64К;
- для доступа к размещаемым блокам используются "дальние" указатели (с атрибутом "far").
В моделях памяти: компактных, больших и сверх больших, farcalloc соответствует calloc, однако не идентична. Она использует параметр типа long unsigned, в то время, как обычные функции (напри- мер malloc) используют параметры unsigned.
В модели памяти tiny эту функцию использовать нельзя.
Возвращаемое Функция farcalloc возвращает указатель значение на новый блок, или адресный нуль NULL, если для размещения нового блока не хватило памя- ти.
Переносимость Функция уникальна для системы DOS.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { char far *fptr; char *str = "Hello"; /* выделить память */ fptr = farcalloc(10,sizeof(char)); if(fptr) { /* скопировать строку "Hello" в выделенный блок памяти. */ /* Замечание. Используется функция movedata, поскольку вы можете работать в малой (small) модели памяти, в которой нельзя использовать функции копирова- ния строки, которые подразумевают, что пара- метры имеют тип near */ movedata(FP_SEG(str),FP_OFF(str),FP_SEG(fptr),FP_OFF(fptr), strlen(str)); /* вывести строку. Обратите внимание на модификатор F*/ printf(" Строка с указателем far: %Fs\n",fptr); /* освободить память */ farfree(fptr); } return 0; }

Farcorel

farcoreleft
Функция Возвращает размер неиспользуемой памяти глобальном heap'e.
Синтаксис #include
unsigned long farcoreleft(void);
Файл, содержащий alloc.h прототип
Описание Функция farcoreleft возвращает общий объем неис- пользуемой памяти в области, лежащей выше послед- него выделенного блока.
В модели памяти tiny эту функцию использовать нельзя.
Возвращаемое farcoreleft возвращает объем неиспользуемой памяти значение между самым верхним выделенным блоком и концом ОЗУ.
Переносимость farcoreleft уникальна для DOS.
Смотрите также
Пример:
#include
#include
int main(void) { printf("Объем неиспользуемой памяти в дальней области\n"); printf("равен %lu байт \n",farcoreleft()); return 0; }

Farfree

farfree
Функция Освобождает блок, размещенный в глобальном heap'e.
Синтаксис #include
void farfree(void far * block);
Файл, содержащий alloc.h прототип
Описание Функция farfree освобождает предварительно выделен- ный в глобальном heap'e блок.
В модели памяти tiny эту функцию использовать нельзя.
В моделях памяти small и medium блоки, выделенные farmalloc, нельзя освободить функцией free и нао- борот, т.к. в этих моделях глобальная и локальная области памяти различаются.
Возвращаемое Нет. значение
Переносимость farfree уникальна для DOS.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { char far *fptr; char *str = "Hello"; /* выделить память */ fptr = farcalloc(10,sizeof(char)); if(fptr) { /* скопировать строку "Hello" в выделенный блок памяти. */ /* Замечание. Используется функция movedata, поскольку вы можете работать в малой (small) модели памяти, в которой нельзя использовать функции копирова- ния строки, которые подразумевают, что пара- метры имеют тип near */ movedata(FP_SEG(str),FP_OFF(str),FP_SEG(fptr),FP_OFF(fptr), strlen(str)); /* вывести строку. Обратите внимание на модификатор F*/ printf(" Строка с указателем far: %Fs\n",fptr); /* освободить память */ farfree(fptr); } return 0; }

Farheapc

farheapchecknode
Функция Ищет и проверяет отдельный узел глобального heap'а.
Синтаксис #include
int farheapchecknode(void *node);
Файл, содержащий alloc.h прототип
Описание Если узел был освобожден и farheapchecknode вызы- вается с указателем на освобожденный узел, то farheapchecknode может вернуть значение _BADNODE, вместо предполагаемого _FREEENTRY. Это происходит потому, что соседние свободные блоки сливаются и блок, указанный при вызове функции, больше не су- ществует.
Возвращемое При ошибке возращется значение < 0, при успешном значение завершение возвращается значение > 0.
Если нет глобального heap'a, то возвращается зна- чение _HEAPEMPTY (1). Если память запорчена, то возвращается _HEAPCORRUPT(-1). Если узел не найден, то возвращается _BADNODE (-2). Если узел освобожден, то возвращается _FREEENTRY (3). Если узел, это используемый блок, то возвращается _USEDENTRY (4).
Переносимость farheapcheckfree уникальна для DOS.
Смотрите также
Пример:
#include
#include
#define NUM_PTRS 10 #define NUM_BYTES 16
int main(void) { char far *array[NUM_PTRS]; int i; for(i=0; i

Farheapf

farheapfillfree
Функция Заполняет свободные блоки глобального heap'а конс- тантным значением.
Синтаксис #include
int farheapfillfree(unsigned int fillvalue);
Файл, содержащий alloc.h прототип
Описание ????????????????
Возвращемое При ошибке возращется значение < 0, при успешном значение завершение возвращается значение > 0.
Если нет глобального heap'а, то возвращается значе- ние _HEAPEMPTY (1). Если глобальный heap проверен, то возвращается _HEAPOK (2). Если память запорчена, то возвращается _HEAPCORRUPT(-1).
Переносимость farheapfillfree уникальна для DOS.
Смотрите также Пример:
#include
#include
#include
#define NUM_PTRS 10 #define NUM_BYTES 16
int main(void) { char far *array[NUM_PTRS]; int i,j; int res; for(i=0; i

Farheapw

farheapwalk
Функция Используется для перемещения по глобальному heap от узла к узлу.
Синтаксис #include
int farheapwalk(struct farheapinfo *hi);
Файл, содержащий alloc.h прототип
Описание farheapwalk подразумевает, что память не запорчена. Для проверки перед использованием farheapwalk, вы- зовите farheapcheck. При достижении последнего блока функция возвращает _HEAPOK. При следующем вызове farheapwalk, она вернет _HEAPEND.
farheapwalk получает указатель на структуру типа heapinfo (определена в файле alloc.h). При первом вызове farheapwalk установите поле hi.ptr в 0. farheapwalk вернет вам в этом поле адрес первого блока в heap памяти. Поле hi.size содержит размер этого блока в байтах. hi.in_use - это флаг, кото- рый устанавливается, если этот блок используется в настоящий момент.
Возвращемое Если нет глобального heap, то возвращается значе- значение ние _HEAPEMPTY (1). Если структура heapinfo содержит верные данные, то возвращается _HEAPOK (2). Если достигнут конец heap памяти, то возвращается _HEAPEND (5).
Переносимость farheapwalk уникальна для DOS.
Смотрите также
Пример:
#include
#include
#define NUM_PTRS 10 #define NUM_BYTES 16
int main(void) { struct farheapinfo hi; char far *array[NUM_PTRS]; int i; for(i=0; i

Farmallo

farmalloc
Функция Размещает данные в области глобального heap.
Синтаксис #include
void far * farmalloc(unsigned long nbytes);
Файл, содержащий alloc.h прототип
Описание Функция farmalloc выделяет блок в глобальном heap, размер блока в байтах передается в аргументе nbytes.
При распределении глобального heap помните следую- щее:
- может быть распределена вся память с произволь- ной выборкой (ЗУПВ);
- могут быть размещены блоки, размером более 64К;
- для доступа к размещаемым блокам используются "дальние" указатели (с атрибутом "far").
В моделях памяти: компактных, больших и сверх больших, функция соответствует, однако не идентич- на, malloc. Она получает параметр типа long unsigned, в то время, как malloc использует пара- метр типа unsigned.
В модели памяти tiny эту функцию использовать нельзя.
Возвращаемое Функция farmalloc возвращает указатель на значение новый выделенный блок или нуль, если для размещения нового блока не хватило памяти.
Переносимость Функция уникальна для системы DOS.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { char far *fptr; char *str = "Hello"; /* выделить память */ fptr = farmalloc(10); if(fptr) { /* скопировать строку "Hello" в выделенный блок памяти. */ /* Замечание: Используется функция movedata, поскольку вы можете работать в малой (small) модели памяти, в которой нельзя использовать функции копирова- ния строки, которые подразумевают, что пара- метры имеют тип near */ movedata(FP_SEG(str),FP_OFF(str),FP_SEG(fptr),FP_OFF(fptr), strlen(str)); /* вывести строку. Обратите внимание на модификатор F*/ printf(" Строка с указателем far: %Fs\n",fptr); /* освободить память */ farfree(fptr); } return 0; }

Farreall

farrealloc
Функция Изменяет размер выделенного глобальной heap памяти блока.
Синтаксис #include
void far * farrealloc(void far * oldblock, unsigned long nbytes);
Файл, содержащий alloc.h прототип
Описание Функция farrealloc изменяет размер выделенного ранее блока, при необходимости содержимое старого блока копируется в новый.
При распределении глобальной heap памяти помните следующее:
- может быть распределена вся память с произволь- ной выборкой (ЗУПВ);
- могут быть размещены блоки, размером более 64К;
- для доступа к размещаемым блокам используются "дальние" указатели (с атрибутом "far").
В модели памяти tiny эту функцию использовать нельзя.
Возвращаемое Функция farrealloc возвращает указатель на значение новый выделенный блок, который может отличаться от испходного. Если для размещения нового блока не хватило памяти, то функция farrealloc возвращает NULL.
Переносимость Функция уникальна для системы DOS.
Смотрите также
Пример:
#include
#include
int main(void) { char far *fptr; fptr = farmalloc(10); printf("Адрес первого блока:%Fp\n",fptr); fptr = farrealloc(20); printf("Адрес второго блока:%Fp\n",fptr); farfree(fptr); return 0; }

Fclose

fclose
Функция Закрывает поток.
Синтаксис #include
int fclose (FILE * stream);
Файл, содержащий stdio.h прототип
Описание Функция fclose закрывает указанный поток stream; Все буфера, связанные с потоком stream, перед зак- рытием сбрасываются. Буфера, размещенные системой, освобождаются во время процесса закрытия. Буфера, назначенные функциями setbuf или setvbuf, не осво- бождаются автоматически. (Однако, если в качестве указателя, функции setvbuf передать 0, то он будет освобожден при закрытии потока.)
Возвращаемое Функция fclose при успешном завершении возвращает значение 0. Если были обнаружены какие-либо ошибки, функция fclose возвращает значение EOF.
Переносимость Данная функция поддерживается системой UNIX и стан- дартом ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { FILE *fp; char buf[11] = "0123456789"; /* создать файл содержащий 10 байт */ fp = fopen("DUMMY.FIL","w"); if(fp) { fwrite(&buf,strlen(buf),1,fp); /* закрыть файл */ fclose(fp); } else { printf("Ошибка, при открытии файла\n"); } return 0; }

Fcloseal

fcloseall
Функция Закрывает открытые потоки.
Синтаксис #include
int fcloseall(void);
Файл, содержащий stdio.h прототип
Описание Функция fcloseall закрывает все открытые потоки, исключая stdin и stdout, stdprn, stdaux и strerr.
Возвращаемое fcloseall возвращает число закрытых потоков. При значение возникновении ошибки возвращает EOF.
Переносимость поддерживается системой UNIX.
Смотрите также
Пример:
#include
int main(void) { FILE *fp1,*fp2; int streams_closed; /* открыть два потока */ fp1 = fopen("DUMMY.ONE","w"); fp2 = fopen("DUMMY.TWO","w"); /* закрыть открытые потоки */ streams_closed = fcloseall(); if(streams_closed == EOF) /* вывести сообщение об ошибке */ perror(" Ошибка "); else /* вывести результат работы функции */ printf("Было закрыто %d потока\n",streams_closed); return 0; }

Fcvt

fcvt
Функция Преобразует число с плавающей точкой в строку сим- волов.
Синтаксис #include
char * fcvt(double value, int ndig, int * dec, int * sign);
Файл, содержащий stdlib.h прототип
Описание Функция fcvt преобразует значение value в строку с нулевым окончанием из ndig цифр, начиная с самой левой значащей цифры, и возвращает адресный указа- тель строки. Позиция десятичной точки относительно начала строки косвенным образом хранится в пара- метре dec (отрицательное значение decpt означает левый отсчет полученных цифр). В самой строке де- сятичной точки нет. Если знак результата отрица- тельный, слово, на которое указывает адресный ука- затель sign, имеет ненулевое значение, иначе оно равно 0. Число округляется к числу разрядов, зада- ваемому параметром ndig.
Возвращаемое Функция fcvt возвращает адресный указатель значение статическую строку, чье содержимое перезаписывает- ся при каждом вызове функций.
Переносимость Функция поддерживается на системах UNIX. Она не определена в стандарте ANSI C, и поэтому мы не ре- комендуем использовать ее при написании переносимых программ.
Смотрите также
Пример:
#include
#include
int main(void) { char *str; double num; int dec, sign; int ndig = 5;
num = 9.876; str = fcvt(num,ndig,&dec,&sign); printf("Строка = %s dec = %d sign = %d\n",string,dec,sign); /* отрицательное число */ num = -123.45; str = fcvt(num,ndig,&dec,&sign); printf("Строка = %s dec = %d sign = %d\n",string,dec,sign); num = 0.678e5; str = fcvt(num,ndig,&dec,&sign); printf("Строка = %s dec = %d sign = %d\n",string,dec,sign); return 0; }

Fdopen

fdopen
Функция Связывает поток с логическим номером файла.
Синтаксис #include
FILE * fdopen(int handle, char * type);
Файл, содержащий stdio.h прототип
Описание Функция fdopen связывает поток с дескриптором, полученным функциями creat, dup, dup2 или open. Тип потока должен совпадать с режимом, в котором был открыт handle.
Символьная строка type имеет одно из следующих значений:
r - открытие файла только для чтения;
w - создание файла для записи;
а - присоединение; открытие для записи в конец файла или создание для записи, если файл не существует;
r+ - открытие существующего файла для обновления (чтения и записи);
w+ - создание нового файла для изменения;
a+ - открытие для присоединения; открытие (или создание, если файл не существует) для обнов- ления в конец файла.
Если данный файл открывается или создается в текс- товом режиме, вы можете приписать символ t к зна- чению параметра type (rt, w+t, и т.д.); аналогич- но, для спецификации бинарного режима вы можете к значению параметра type добавить символ b (wb,a+b, и т.д.).
Если в параметре type отсутствуют символы t или b, режим будет определяться глобальной переменной _fmode. Если переменная _fmode имеет значение O_BINARY, файлы будут открываться в бинарном режи- ме, иначе, если _fmode имеет значение O_TEXT, фай- лы открываются в текстовом режиме. Данные констан- ты O_... определены в файле fcntl.h.
При открытии файла в режиме обновления (UPDATE), над результирующим потоком stream могут быть выполнены как операции ввода, так и вывода. Тем не менее вывод не может следовать непосредст- венно за вводом без вмешательства функций fseek или rewind. Также ввод, без применения функций fseek, rewind не может непосредственно следовать за выводом или вводом, который встречает конец файла (EOF).
Возвращаемое При успешном завершении fdopen возвращает значение заново открытый поток stream. В случае ошибки, функция возвращают ноль (NULL).
Переносимость fdopen поддерживаeтся на системах UNIX.
Смотрите также Функции
Пример:
#include
#include
#include
#include
int main(void) { int handle; FILE *stream;
/* открыть файл */ handle = open("DUMMY.FIL", O_CREAT, S_IREAD|S_IWRITE);
/* теперь преобразуем его в поток */ stream = fdopen(handle, "w"); if (stream == NULL) printf("Ошибка fdopen\n"); else { fprintf(stream, "Hello, world\n"); fclose(stream); } return 0; }

Feof

feof
Функция Обнаруживает конец файла (EOF) в потоке.
Синтаксис #include
int feof(FILE * stream);
Файл, содержащий stdio.h прототип
Описание Функция feof является макрокомандой, которая производит проверку данного потока stream на приз- нак конца файла (EOF). Если признак получил значе- ние хотя бы один раз, то операции чтения файла сохраняют это значение до тех пор, пока не будет вызвана функция rewind или файл не будет закрыт.
Признак конца файла сбрасывается при каждой операции ввода.
Возвращаемое значение Функция feof возвращает ненулевое значение, если при последней операции ввода потока stream был обнаружен конец файла, и 0 в противном случае.
Переносимость feof доступна в системе UNIX и поддерживается стандартом ANSI C.
Смотрите также
Пример:
#include
int main(void) { FILE *stream; char ch;
/* открыть файл для чтения */ stream = fopen("DUMMY.FIL", "r"); /* ввести из файла символ */ ch = fgetc(stream); /* конец файла? */ if(feof(stream)) printf("Конец файла\n"); /* закрыть файл */ fclose(stream); return 0; }

Ferror

ferror
Функция Обнаруживает ошибки в потоке.
Синтаксис #include
int ferror(FILE * stream);
Файл, содержащий stdio.h прототип
Описание Функция ferror является макрокомандой, которая проверяет данный поток stream на ошибочную опера- цию записи или чтения. Если установлен признак ошибки потока stream, он сохраняет его до вызова функций clearerr или rewind или до момента закры- тия потока.
Возвращаемое Функция ferror возвращает ненулевое значение, если значение в потоке stream была обнаружена ошибка.
Переносимость Данная функция поддерживается на системах UNIX и совместима со стандартом ANSI C.
Смотрите также
Пример:
#include
int main(void) { FILE *stream; char ch;
/* открыть файл для записи */ stream = fopen("DUMMY.FIL", "w"); /* справоцировать ошибку */ ch = fgetc(stream); /* конец файла? */ if(ferror(stream)) { /* вывести сообщение об ошибке */ printf("Ошибка чтения\n"); /* сбросить признак ошибки */ clearerr(stream); } fclose(stream); return 0; }

Fflush

fflush
Функция Сбрасывает поток.
Синтаксис #include
int fflush(FILE * stream);
Файл, содержащий stdio.h прототип
Описание Функция fflush записывает в файл содержимое бу- фера, связанного с потоком stream, если он был от- крыт на вывод.
fflush не оказывает влияния на небуферизованные потоки.
Возвращаемое В случае успешного завершения возвращает 0. При значение ошибке возвращает EOF.
Переносимость Поддерживается стандартом ANSI C и совместима с UNIX.
Смотрите также
Пример:
#include
#include
#include
#include
void flush(FILE *stream);
int main(void) { FILE *stream; char msg[] = "Тестовый пример"; /* создать файл */ stream = fopen("DUMMY.FIL","w"); /* записать в файл данные */ fwrite(msg,strlen(msg),1,stream); clrscr(); printf("Для сброса потока нажмите любую клавишу ...\n"); getch(); /* сбросить данные в файл, без его закрытия */ flush(stream); printf("Содержимое буферов сброшено в файл\n"); printf("Для завершения нажмите любую клавишу\n"); getch(); return 0; } void flush(FILE *stream) { int duphandle; /* сбросить внутренние буфера файла */ fflash(stream); /* создать второй дескриптор */ duphandle = dup(fileno(stream)); /* закрыть второй дескриптор для сброса буферов DOS */ close(duphandle); }

Fgetc

fgetc
Функция Получает символ из потока.
Синтаксис #include
int fgetc(FILE * stream);
Файл, содержащий stdio.h прототип
Описание fgetc возвращает следующий символ из указанного входного потока stream.
Возвращаемое При успешном завершении возвращает символ, преоб- значение разованный к типу int без расширения знака. При обнаружении конца файла возвращает EOF.
Переносимость Поддерживается стандартом ANSI C и совместима с UNIX.
Смотрите также
Пример:
#include
#include
#include
int main(void) { FILE *stream; char msg[] = "Тестовый пример"; char ch; /* создать файл для его изменения */ stream = fopen("DUMMY.FIL","w+"); /* записать в файл данные */ fwrite(msg,strlen(msg),1,stream); /* перейти в начало файла */ fseek(stream,0,SEEK_SET); do { /* ввести символ из файла */ ch = fgetc(stream); /* вывести символ на экран */ putch(ch); } while(ch!=EOF); fclose(stream); return 0; }

Fgetchar

fgetchar
Функция Получает символ из потока stdin.
Синтаксис #include
int fgetchar(void);
Файл, содержащий stdio.h прототип
Описание fgetchar возвращает следующий символ из потока stdin. Определяется как fgetc(stdin).
Возвращаемое При успешном завершении возвращает символ, преоб- значение разованный к типу int без расширения знака. При обнаружении конца файла или ошибки возвращает EOF.
Переносимость Поддерживается UNIX.
Смотрите также
Пример:
#include
int main(void) { char ch; /* запрос ввода */ printf("Введите символ, затем нажмите .\n"); /* ввести символ из потока stdin */ ch = fgetchar(); /* напечатать введенный символ */ printf(" Считан символ: '%c'\n",ch); return 0; }

Fgetpos

fgetpos
Функция Возвращает положение указателя текущей позиции в файле.
Синтаксис #include
int fgetpos(FILE * stream, fpos_t *pos);
Файл, содержащий stdio.h прототип
Описание fgetpos сохраняет позицию указателя файла, связан- ного с потоком stream, в месте, указываемом pos. Точное значение является "волшебной булочкой", другими словами, для вас оно не имеет значения.
Тип fpos_t описывается следующим образом:
typedef long fpos_t;
Возвращаемое При успешном завершении fgetpos возвращает 0. При значение ошибке возвращает ненулевое значение и устанавли- вает errno в EBADF или EINVAL.
Переносимость Поддерживается стандартом ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { FILE *stream; char string[] = "Тестовый пример"; fpos_t filepos; /* создать файл для его изменения */ stream = fopen("DUMMY.FIL","w+"); /* записать в файл данные */ fwrite(string,strlen(string),1,stream); /* сообщить положение указателя */ fgetpos(stream,&filepos); printf("Указатель находится в %ld позиции\n"); fclose(stream); return 0; }

Fgets

fgets
Функция Получает строку символов из потока.
Синтаксис #include
char * fgets(char s, int n, FILE *stream);
Файл, содержащий stdio.h прототип
Описание fgets считывает из потока stream строку символов и помещает ее в s. Ввод завершается после ввода n-1 символа или при вводе символа перехода на сле- дующую строку, смотря что произойдет раньше. В от- личие от gets, fgets прекращает ввод строки при получении символа перехода на следующую строку. Нулевой байт добавляется в конец строки для инди- кации ее конца.
Возвращаемое При успешном завершении возвращает указатель на s, значение при ошибке или конце файла возвращает NULL.
Переносимость Совместима с системой UNIX и поддерживается стандар- том ANSI C. Определена также в книге Керниган и Ритчи.
Смотрите также
Пример:
#include
#include
int main(void) { FILE *stream; char string[] = "Тестовый пример"; char msg[20]; /* создать файл для его изменения */ stream = fopen("DUMMY.FIL","w+"); /* записать в файл данные */ fwrite(string,strlen(string),1,stream); /* перейти в начало файла */ fseek(stream,0,SEEK_SET); /* ввести строку из файла */ fgets(msg,strlen(string)+1,stream); /* напечатать строку */ printf("%s",msg); fclose(stream); return 0; }

Fileleng

filelength
Функция Получает размер файла в байтах.
Синтаксис #include
long filelength(int handle);
Файл, содержащий io.h прототип
Описание Функция filelength возвращает длину в байтах фай- ла, соответствующего дескриптору handle.
Возвращаемое При успешном завершении функция filelength значение возвращает значение типа long- длину файла в бай- тах. При ошибке функция возвращает значение -1L, и глобальной переменной errno присваивается:
EBADF - Неверный номер файла.
Переносимость filelength уникальна для DOS.
Смотрите также
Пример:
#include
#include
#include
#include
#include
int main(void) { int handle; char buf[11] = "0123456789"; /* создать файл из 10 байт */ handle = open("DUMMY.FIL",O_RDWR|O_CREAT|O_TRUNC,S_IREAD|S_IWRITE); write(handle,buf,strlen(buf)); /* напечатать размер файла */ printf("Размер файла в байтах : %ld\n",filelength(handle)); /* закрыть файл */ close(handle); return 0; }

Fileno

fileno
Функция Получает дескриптор файла.
Синтаксис #include
int fileno(FILE * stream);
Файл, содержащий stdio.h прототип
Описание fileno представляет собой макрокоманду, которая возвращает логический номер файла для заданного потока stream. Если поток stream имеет более одно- го номера, функция fileno возвращает номер, назна- ченный данному потоку при первом открытии.
Возвращаемое fileno возвращает целое число, обозначающее значение дескриптор файла, соответствующий потоку stream.
Переносимость Данная функция поддерживается на системах UNIX.
Смотрите также
Пример:
#include
int main(void) { FILE *stream; int handle; /* создать файл */ stream = fopen("DUMMY.FIL","w"); /* получить дескриптор файла */ handle = fileno(stream); /* напечатать его */ printf("Дескриптор файла = %d\n",handle); /* закрыть файл */ fclose(stream); return 0; }

Fillelli

fillellipse
Функция Рисует и закрашивает эллипс.
Синтаксис #include
void far ellipse(int x,int y,int xradius, int yradius);
Файл, содержащий graphics.h прототип
Описание Рисует эллипс с центром в точке ( x,y ) и горизонтальной и вертикальной осями xradius и yradius соответственно, и закрашивает его текущими цветом закраски, используя текущий шаблон.
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддерживающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int midx,midy,i; int xradius = 100,yradius = 50;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx() / 2; midy = getmaxy() / 2;
/* цикл по шаблонам */ for(i=EMPTY_FILL; i

Fillpoly

fillpoly
Функция Рисует и закрашивает многоугольник.
Синтаксис #include
void far fillpoly (int numpoints, int far *polypoints);
Файл, содержащий graphics.h прототип
Описание fillpoly рисует контур многоугольника ,имею- щий numpoints точек, используя текущий вид линии и цвет (так же, как это делает drawpoly),а затем закрашивает многоугольник текущим цветом закраски и с помощью текущего шаблона.
polypoints указывает на последовательность из (numpoints x 2) целых чисел. Каждая пара чисел x и y является координатами вершины многоугольника.
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int i,maxx,maxy; /* наш многоугольник */ int poly[10];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } maxx = getmaxx(); maxy = getmaxy();
poly[0] = 20; /* первая точка */ poly[1] = maxy/2;
poly[2] = maxx-20; /* 2 */ poly[3] = 20;
poly[4] = maxx-50; /* 3 */ poly[5] = maxy-20;
poly[6] = maxx/2; /* 4 */ poly[7] = maxy/2;
poly[8] = poly[0]; /* возврат в исходную т. */ poly[9] = poly[1];
/* цикл по шаблонам */ for(i=EMPTY_FILL; i

Findfirs

findfirst
Функция Просматривает директорию диска.
Синтаксис #include
#include
int findfirst(char * pathname, struct ffblk * ffblk, int attrib);
Файл, содержищий dir.h прототип
Описание Функция findfirst производит поиск в директории диска посредством системного вызова DOS 0x4E.
Параметр pathname представляет собой символьную строку, содержащую необязательную спецификацию дискового устройства, маршрут поиска и имя иско- мого файла. Имя файла может содержать шаблоны (такие как ? или *). Если соответствующий файл найден, структура ffblk заполняется информацией о файле и каталоге, его содержащем.
Cтруктура ffblk определена следующим образом:
struct ffblk { char ff_reserved[21]; /* зарезервировано DOS */ char ff_attrib; /* атрибуты */ int ff_ftime; /* время */ int ff_fdate; /* дата */ long ff_fsize; /* размер */ char ff_fname[13]; /* имя файла */ };
Параметр attrib - это используемый в MS-DOS бай- татрибут файла, который употребляется при выборе подходящих для поиска файлов. Параметр attrib мо- жет быть одной из следующих определенных в файле dos.h констант:
FA_RDONLY - атрибут "только чтение"; FA_HIDDEN - скрытый файл; FA_SYSTEM - системный файл; FA_LABEL - метка тома; FA_DIREC - директория; FA_ARCH - архив.
Более подробную информацию об этих атрибутах вы найдете в документе "Справочное руководство прог- раммиста по DOS".
Отметим, что ff_ftime и ff_fdate содержат битовые поля для определения даты и времени. Эти структу- ры поддерживаются DOS. Обе 16-битовые структуры делятся на 3 поля:
ff_ftime: биты 0-4 Секунды, деленные на 2. (т.е. 10 соответствует 20 секундам). биты 5-10 минуты ьиты 11-15 часы
ff_fdate: биты 0-4 день биты 5-8 месяц биты 9-15 год с 1980 (т.е. 9 соответствует 1989)
Структура ftime объявленная в io.h, использует поля времени и даты соответствующие этом. Смотри- те функции getftime и setftime.
Возвращаемое При успешном завершении, то есть при успешном значение поиске файла, соответствующего параметру pathname, функция findfirst возвращает значение 0.
Если подходящих файлов больше не существует, или в имени файла допущена ошибка, функция возвращают значение -1 и глобальная переменная errno получа- ет одно из следующих значений:
ENOENT - маршрут доступа или имя файла не найде- ны; ENMFILE - нет больше файлов.
Переносимость Функция уникальна для DOS.
Смотрите также
Пример:
#include
#include
int main(void) { struct ffblk ffblk; int done; printf("Листинг директории *.*\n"); done = findfirst(**.**,&ffblk,0); while (!done) { printf(" %s\n", ffblk.ff_name); done = findnext(&ffblk); } return 0; }
Результат:
Листинг директории *.* FINDFRST.C FINDFRST.OBJ FINDFRST.MAP FINDFRST.EXE

Findnext

findnext
Функция Продолжает просмотр, начатый функцией findfirst.
Синтаксис #include
int fidtnext(struct ffblk * ffblk);
Файл, содержащий dir.h прототип
Описание Функция findnext используется для выборки последо- вательности файлов, соответствующих параметру pathname, задаваемому функцией findfirst. ffblk - это тот же самый блок, который заполняется при вызове функции findfirst. Данный блок содержит всю необходимую информацию для продолжения поис- ка. При каждом вызове функции findnext будет воз- вращаться одно имя файла до тех пор, пока файлы, соответствующие параметру, pathname не закончат- ся.
Возвращаемое При успешном завершении, то есть при успешном значение поиске файла, соответствующего параметру pathname, функция findnext возвращает значение 0.
Если подходящих файлов больше не существует, или в имени файла допущена ошибка, функция возвращает значение -1 и глобальная переменная errno получа- ет одно из следующих значений:
ENOENT - маршрут доступа или имя файла не найде- ны; ENMFILE - нет больше файлов.
Переносимость Функция уникальна для DOS.
Смотрите также
Пример:
#include
#include
int main(void) { struct ffblk ffblk; int done; printf("Листинг директории *.*\n"); done = findfirst(**.**,&ffblk,0); while (!done) { printf(" %s\n", ffblk.ff_name); done = findnext(&ffblk); } return 0; }
Результат:
Листинг директории *.* FINDFRST.C FINDFRST.OBJ FINDFRST.MAP FINDFRST.EXE

Floodfil

floodfill
Функция Заполняет ограниченную область.
Синтаксис #include
void far floodfill(int x, int y int border);
Файл, содержащий graphics.h прототип
Описание floodfill заполняет ограниченную область на устройствах с побитовым отображением. (x,y) - произвольная точка внутри закрашиваемой области. Область, граница которой окрашена цветом border,заполняется текущим цветом закраски и шаблоном. Если указанная точка находится внутри ограниченной области,то окрашивается область, а если снаружи, то закрашивается все поле за преде- лами области.
Используйте, если это возможно, fillpoly вместо floodfill. Это позволит обеспечить кодовую сов- местимость с будущими версиями.
Замечание. floodfill не работает с драйвером IBM-8514.
Возвращаемое Если в процессе заполнения области возникла значение ошибка, то graphresult возвращает значение -7.
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int maxx,maxy;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } maxx = getmaxx(); maxy = getmaxy(); /* выбор цвета рисования */ setcolor(getmaxcolor()); /* выбор цвета заполнения */ selectfillstyle(SOLID_FILL,getmaxcolor()); /* нарисовать границу вокруг экрана */ rectangle(0,0,maxx,maxy); /* нарисовать несколько окружностей */ circle(maxx/3,maxy/2,50); circle(maxx/2,20,100); circle(maxx-20,maxy-50,75); circle(20,maxy-20,25); /* ожидать нажатия клавиши */ getch(); /* заполнить ограниченную область */ floodfill(2,2,getmaxcolor()); /* очистка */ getch(); closegraph(); return 0; }

Floor

floor
Функция Округление в меньшую сторону.
Синтаксис #include
double floor(double x);
Файл, содержащий math.h прототип
Описание Функция floor находит наибольшее целое число не превышающее значение x.
Возвращаемое Функция возвращает найденное целое число. значение (как double).
Переносимость Функция поддерживаются системой UNIX и стандартом ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { double number = 123.54; double down,up; down = floor(number); up = ceil(number); printf("Исходное число:%5.21f\n",number); printf("Округленное вниз :%5.21f\n",down); printf("Округленное вверх :%5.21f\n",up); return 0; }

Flushall

flushall
Функция Сбрасывает буфера всех потоков.
Синтаксис #include
int flushall(void);
Файл, содержащий stdio.h прототип
Описание Функция flushall сбрасывает все буфера, связанные с открытыми входными потоками, и записывает в со- ответствующие файлы все буфера, относящиеся к от- крытым выходным потокам. Любые операции чтения, следующие за функцией flushall будут читать новые данные для входных файлов в буферы.
Все потоки остаются открытыми.
Возвращаемое flushall возвращает число открытых входных и выход- значение потоков.
Переносимость Поддерживается системой UNIX.
Смотрите также
Пример:
#include
int main(void) { FILE *stream; /* создать файл */ stream = fopen("DUMMY.FIL","w"); /* сбросить все открытые потоки */ printf("Сброшено %d потоков\n",flushall()); /* закрыть файл */ fclose(stream); return 0; }

Fmod

fmod
Функция Вычисляет x по модулю y, то есть остаток от деления нацело x/y.
Синтаксис #include
double fmod(double x, double y);
Файл, содержащий math.h прототип
Описание Функция fmod вычисляет x по модулю y (то есть остаток f, удовлетворяющий равенству x=iy+f для целого i и 0
#include
int main(void) { double x=5.0,y=2.0; double result; result = fmod(x,y); printf("Остаток от деления %1f на %1f равен %1f",x,y,result); return 0; }
Результат:
Остаток от деления 5.0 на 2.0 равен 1.0

Fnmerge

fnmerge
Функция Создает новое имя файла из отдельных частей.
Синтаксис #include
void fnmerge(char * path, const char * drive, const char * dir, const char * name, const char * ext);
Файл, содержащий dir.h прототип
Описание Функция fnmerge создает имя файла из его компонен- тов. Новое имя файла, то есть его полный маршрут доступа, строится следующим образом:
X:\DIR\SUBDIR\NAME.EXT , где
X - спецификация устройства;
\DIR\SUBDIR\ - директория;
NAME - имя;
.EXT - расширение
fnmerge предполагает, что для запоминания постро- енного имени маршрута доступа достаточно места. Максимальная длина маршрута доступа определяется константой MAXPATH, определенной в dir.h.
Две вышеописанные функции взаимообратны. Если вы с помощью функции fnsplit разделите на части мар- шрут доступа path, а затем сольете полученные компоненты с помощью функции fnmerge, то вы снова получите маршрут доступа path.
Возвращаемое Нет. значение
Переносимость Функция работает только в системе DOS.
Смотрите также
Пример:
#include
#include
#include
int main(void) { char drive[MAXDRIVE]; char dir[MAXDIR]; char file[MAXFILE]; char ext[MAXEXT]; char s[MAXPATH]; int flag; for (;;) { printf("> "); if (!gets(s)) break; flag = fnsplit(s,drive,dir,file,ext); printf(" drive: %s, dir: %s, file: %s, ext: %s, ", drive, dir, file, ext); printf("flags: "); if (flag & DRIVE) printf(":"); if (flag & DIRECTORY) printf("d"); if (flag & FILENAME) printf("f"); if (flag & EXTENSION) printf("e"); printf("\n"); fnmerge(t,drive,dir,file,ext); if (strcmp(t,s) != 0) /* shouldn't happen! */ printf(" --> strings are different!"); } }
Вывод: > C:\TURBOC\FN.C drive: C:, dir: \TURBOC\, file: FN, ext: .C,flags: :dfe > FILE:C drive: , dir: , file: FILE, ext: .C, flags: fe > \TURBOC\SUBDIR\NOEXT. drive: , dir: \TURBOC\SUBDIR\, file: NOEXT, ext: ., flags: dfe > C:MYFILE drive: C:, dir: , file: MYFILE, ext: , flags: :f > z

Fnsplit

fnsplit
Функция Разделяет полное имя файла на компоненты.
Синтаксис #include
int fnsplit(char * path, char * drive, char * dir, char * name, char * ext);
Файл, содержащий dir.h прототип
Описание Функция fnsplit берет в качестве входного аргу- мента полное имя файла (то есть маршрут доступа path) в форме :
X:\DIR\SUBDIR\NAME.EXT
и делит его на 4 части, которые запоминает в сим- вольных строках, адресными указателями которых являются: drive, dir, name, ext. (Каждый из ком- понентов может получить значение NULL, что озна- чает, что данный компонент был выделен, но не сохранен).
Максимальный размер для данных символьных строк задается константами MAXDRIVE, MAXDIR, MAXPATH, MAXNAME, MAXEXT (определяемыми в файле dir.h), причем каждая длина включает в себя место для по- зиции нулевого байта.
Константа Максимальная Строка длина ---------------------------------------------------------------------- MAXPATH (80) path; MAXDRIVE (3) drive; включая двоеточие (:); MAXDIR (66) dir; включая лидирующий и хвостовой знак (\); MAXFILE (9) name; MAXEXT (5) ext; включая ведущую точку(.) ----------------------------------------------------------------------
Функция fnsplit подразумевает, что для хранения каждого компонента достаточно места ( если компо- нент имеет значение, отличное от NULL).
При расщеплении полного имени файла (маршрута доступа) на части функция fnsplit воспринимает символы пунктуации следующим образом:
- компонент drive сохраняет двоеточие, присоеди- ненное к спецификации дисковода (C:, A: и т.д);
-компонент dir сохраняет ведущие и хвостовые зна- ки \ (\tc\include\, \source\, и т.д);
-компонент name включает имя файла;
- компонент ext сохраняет точку, предшествующую расширению имени файла (.c, .exe, и т.д.).
Две вышеописанные функции взаимообратны. Если вы с помощью функции fnsplit разделите на части мар- шрут доступа path, а затем сольете полученные компоненты с помощью функции fnmerge, то вы снова получите маршрут доступа path.

Возвращаемое Функция fnsplit возвращает целое число (составлен- значение ное из 5-ти флагов, описанных в файле dir.h), ко- торое показывает, какие компоненты полного имени файла присутствуют в path; далее перечислены фла- ги и компоненты, которые они обозначают:

EXTENSION - расширение имени файла; FILENAME - имя файла; DIRECTORY - директория (и возможные поддиректории) DRIVE - спецификация дисковода (смотрите файл dir.h); WILDCARD - шаблоны (* или?).

Переносимость Функция работает только в системе DOS.

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

Пример:

#include

#include

#include

int main(void) { char drive[MAXDRIVE]; char dir[MAXDIR]; char file[MAXFILE]; char ext[MAXEXT]; char *s; int flag; s=getenv("COMSPEC"); flag = fnsplit(s,drive,dir,name,ext); printf("Командный процессор :"); if (flag & DRIVE) printf("\tдисковод: %s\n",drive); if (flag & DIRECTORY) printf("\tдиректория: %s\n",dir); if (flag & FILENAME) printf("\tимя: %s\n",name); if (flag & EXTENSION) printf("\tрасширение: %s\n",ext); return 0; }

Fopen

fopen
Функция Открывает поток.
Синтаксис #include
FILE * fopen(char * filename, char * type);
Файл, содержащий stdio.h прототип
Описание Функция fopen открывает файл, именованный парамет- ром filename и связывает его с соответствующим потоком stream. Функция fopen в качестве резуль- тата возвращает адресный указатель, который будет идентифицировать поток stream в последующих опе- рациях.
Строка mode, используемая в функции fopen может принимать следующие значения:
r - открытие файла только для чтения;
w - создание файла для записи;
а - присоединение; открытие для записи в конец файла или создание для записи, если файл не существует;
r+ - открытие существующего файла для обновления (чтения и записи);
w+ - создание нового файла для изменения;
a+ - открытие для присоединения; открытие (или создание, если файл не существует) для обнов- ления в конец файла.
Если данный файл открывается или создается в тек- стовом режиме, вы можете приписать символ t к значению параметра type (rt, w+t, и т.д.); анало- гично, для спецификации бинарного режима вы може- те к значению параметра type добавить символ b (wb,a+b, и т.д.). Если в параметре type отсутст- вуют символы t или b, режим будет определяться глобальной переменной _fmode. Если переменная _fmode имеет значение O_BINARY, файлы будут отк- рываться в бинарном режиме, иначе, если _fmode имеет значение O_TEXT, файлы открываются в текс- товом режиме. Данные константы O_... определены в файле fcntl.h.
При открытии файла в режиме обновления (UPDATE), над результирующим потоком stream могут быть вы- полнены как операции ввода, так и вывода. Тем не менее вывод не может следовать непосредственно за вводом без вмешательства функций fseek или rewind, а также ввод, без применения функций fseek, rewind не может непосредственно следовать за выводом или вводом, который встречает конец файла (EOF).
Возвращаемое При успешном завершении fopen возвращает значение указатель на открытый поток stream. В случае ошибки функция возвращает нуль (NULL).
Переносимость fopen поддерживаeтся на системах UNIX и опреде- лена в ANSI C. Кроме этого, она описана в книге Kernighan & Ritchie.
Смотрите также (пере- менная),
Пример:
/* Программа создает дубль AUTOEXEC.BAT */
#include
int main(void) { FILE *in, *out;
if((in = fopen("\\AUTOEXEC.BAT","rt"))==NULL) { fprintf(stderr, "Не могу открыть файл \n"); return(1); }
if((out = fopen("\\AUTOEXEC.BAK","wt"))==NULL) { fprintf(stderr, "Не могу открыть выходной файл \n"); return(1); }
while(!feof(in)) fputc(fgetc(in), out);
fclose(in); fclose(out); return 0; }

FP_OFF

FP_OFF
Функция FP_OFF - получает смещение "дальнего" адреса (адреса с атрибутом "far").
Синтаксис #include
unsigned FP_OFF(void far *p);
Файл, содержащий dos.h прототип
Описание Макрокоманда FP_OFF используется для получения или установки адресного смещения указателя с ат- рибутом "far".
Возвращаемое Функция FP_OFF возвращает целое число без знака, значение представляющее собой значение адресного смещения.
Переносимость FP_OFF уникальна для DOS.
Смотрите также
Пример:
#include
#include
int main(void) { char *str = "fpoff.c"; printf(" Смещение этой строки равно %X\n",FP_OFF(str)); return 0; }

FP_SEG

FP_SEG
Функция Получает адрес сегмента с атрибутом "far" (даль- ний).
Синтаксис #include
unsigned FP_SEG(void far *p);
Файл, содержащий dos.h прототип
Описание  Макрокоманда FP_SEG используется для получения или установки значения адреса сегмента для адресного указателя с атрибутом "far".
Возвращаемое  Функция FP_SEG возвращает целое число без знака, значение  представляющее собой значение адреса сегмента.
Смотрите также
Пример:
#include
#include
int main(void) { char *str = "fpoff.c"; printf(" Смещение этой строки равно %X\n",FP_OFF(str)); return 0; }

Fprintf

fprintf
Функция Посылает форматированный вывод в поток.
Синтаксис #include
int fprintf(FILE * stream, const char *format [,argument,...]);
Файл, содержащий stdio.h прототип
Описание fprintf получает набор аргуметов, по одному для каждой спецификации формата, и выводит данные в поток. Количество аргументов должно совпадать с числом спецификаций.
Описание спецификаций формата приведено в описа- нии функции printf.
Возвращаемое fprintf возвращает число выведенных байт. При появ- значение лении ошибки возвращает EOF.
Переносимость fprintf совместима с системой UNIX и поддержи- вается стандартом ANSI C. Сосместима с Kernichan & Rithie.
Смотрите также
Пример:
#include
int main(void) { FILE *stream; int i=100; char c = 'C'; float f = 1.234; /* открыть файл для изменения */ stream = fopen("DUMMY.FIL","w+"); /* вывести в файл данные */ fprintf(stream,"%d %c %f",i,c,f); /* закрыть файл */ fclose(stream); return 0; }

Fputc

fputc
Функция Выводит символ в поток.
Синтаксис #include
int fputc(int c, FILE * stream);
Файл, содержащий stdio.h прототип
Описание Функция fputc выводит символ с в поток stream.
Возвращаемое В случае успеха возвращается символ с. значение В случае ошибки возвращается EOF.
Переносимость Поддерживается системой UNIX и стандартом ANSI C.
Смотрите также
Пример:
#include
int main(void) { char msg[] = "Здравствуй мир"; int i=0; while(msg[i]) { fputc(msg[i],stdout); i++; } return 0; }

Fputchar

fputchar
Функция Выводит символ в поток stdout.
Синтаксис #include
int fputchar(int c);
Файл, содержащий stdio.h прототип
Описание Функция fputchar выводит символ с в поток stdout. fputchar(c) определяется как fputc(c,stdout).
Возвращаемое В случае успеха возвращается символ с. значение В случае ошибки возвращается EOF.
Переносимость Cовместима с системой UNIX.
Смотрите также
Пример:
#include
int main(void) { char msg[] = "Тестовый пример"; int i=0; while(msg[i]) { fputchar(msg[i]); i++; } return 0; }

Fputs

fputs
Функция Выводит строку символов в поток.
Синтаксис #include
int fputs(char * string, FILE * stream);
Файл, содержащий stdio.h прототип
Описание Функция fputs копирует строку, ограниченную нулевым байтом в поток stream. Она не добавляет в конец строки символ перехода на новую строку и не выво- дит нулевой символ.
Возвращаемое При успешном завершении fputs возвращает последний значение выведенный символ. В противном случае возвращает EOF.
Переносимость fputs поддерживается системой UNIX и стандартом ANSI C. Кроме этого определена в Kernighan & Ritchie.
Cмотрите также fgets, gets, puts.
Пример:
#include
int main(void) { /* вывести строку в поток */ fputs("Тестовый пример",stdout); return 0; }

Fread

fread
Функция Считывает данные из потока.
Синтаксис #include
size_t fread(void *ptr, size_t size, size_t n, FILE * stream);
Файл, содержащий stdio.h прототип
Описание Функция fread считывает n элементов данных, каждый длиной size байтов, из потока stream в блок с ад- ресной ссылкой ptr.
Общее число вводимых байт равно n x size.
Возвращаемое При успешном завершении функция возвра- значение щает количество элементов данных (не байтов), реально прочитанных.
В случае достижения конца файла или возникновения ошибки функция fread возвращает short count (воз- можно 0).
Переносимость Данная функция поддерживается системой UNIX и стандартом ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { FILE *stream; char msg[] = "Тестовый пример"; char buf[20]; if(stream = fopen("DUMMY.FIL","w+")) == NULL) { fprintf(stderr,"Не могу открыть файл\n"); return 1; } /* вывести в файл данные */ fwrite(msg,strlen(msg)+1,1,stream); /* перейти на начало файла */ fseek(stream,SEEK_SET,0); /* прочитать данные */ fread(buf,strlen(msg)+1,1,stream); printf("%s\n",buf); fclose(stream); return 0; }

Free

free
Функция Освобождает память, выделенную под блок.
Синтаксис #include
void free(void *block);
Файл, содержащий stdlib.h и alloc.h прототип
Описание free освобождает блок памяти, выделенный функциями calloc, malloc или realloc.
Возвращаемое Нет. значение
Переносимость free совместима с системой UNIX и поддерживается стандартом ANSI C.
Смотрите также
Пример:
#include
#include
#include
int main(void) { char *str; /* выделить память под строку */ str = malloc(10); /* скопировать в строку "Hello" */ strcpy(str,"Hello"); /* вывести строку */ printf("Строка: %s\n",str); /* освободить память */ free(str); return 0; }

Freemem

freemem
Функция Освобождает ранее выделенный блок памяти.
Синтаксис #include
int freemem(unsigned seg);
Файл, содержащий dos.h прототип
Описание freemem освобождае блок памяти выделенный пред- шествовавшим вызовом allocmem. seg - адрес сег- мента выделенного блока.
Возвращаемое При успешном завершении возвращает 0, при ошибке значение возвращает -1 и устанавливает глобальную пере- менную erron равной:
ENOMEM - Недостаточно памяти.
Смотрите также
Пример:
#include
#include
#include
int main(void) { unsigned int size,segp; int stat; size = 64; /* выделить блок размером 1024 (64х16) байт */ stat = allocmem(size,&segp); if(stat == 0) printf("Память выделена в сегменте %X\n",segp); else printf("Максимально доступно %u параграфов памяти\n",stat); freemem(segp); return 0; }

Freopen

freopen
Функция Связывет с потоком новый файл.
Синтаксис #include
FILE * freopen(char * filename, char * mode, FILE *stream);
Файл, содержащий stdio.h прототип
Описание Функция freopen замещает указанным файлом откры- тый поток stream. Функция freopen закрывает файл, связанный со stream, независимо от откраваемого файла. Ее можно использовать для изменения пото- ков, связанных с stdin, stdout или stderr.
Строка mode, используемая в функции freopen, мо- жет принимать следующие значения:
r - открытие файла только для чтения;
w - создание файла для записи;
а - присоединение; открытие для записи в конец файла или создание для записи, если файл не существует;
r+ - открытие существующего файла для обновления (чтения и записи);
w+ - создание нового файла для изменения;
a+ - открытие для присоединения; открытие (или создание, если файл не существует) для об- новления в конец файла.
Если данный файл открывается или создается в тек- стовом режиме, вы можете приписать символ t к значению параметра mode (rt, w+t, и т.д.); анало- гично, для спецификации бинарного режима вы може- те к значению параметра mode добавить символ b (wb,a+b, и т.д.). Если в параметре mode отсутст- вуют символы t или b, режим будет определяться глобальной переменной _fmode. Если переменная _fmode имеет значение O_BINARY, файлы будут отк- рываться в бинарном режиме, иначе, если _fmode имеет значение O_TEXT, файлы открываются в текс- товом режиме. Данные константы O_... определены в файле fcntl.h.
При открытии файла в режиме обновления (UPDATE), над результирующим потоком stream могут быть вы- полнены как операции ввода, так и вывода. Тем не менее вывод не может следовать непосредственно за вводом без вмешательства функций fseek или rewind, а также ввод без применения функций fseek, rewind не может непосредственно следовать за выводом или вводом, который встречает конец файла (EOF).
Возвращаемое При успешном завершении, freopen возвращает значение указатель на открытый поток stream. В случае ошибки, функция возвращает ноль (NULL).
Переносимость freopen поддерживаeтся на системах UNIX и совместима со стандартом ANSI C.
Смотрите также
Пример:
#include
int main(void) { /* перенаправить стандартный вывод в файл */ if(freopen("OUTPUT.FIL","w",stdout) == NULL) fprintf(stderr,"Ошибка перенаправления потока\n"); /* этот вывод будет осуществляться в файл */ printf("этот вывод будет осуществляться в файл\n"); /* закрыть стандартный вывод */ close(stdout); return 0; }

Frexp

frexp
Функция Разщепляет число двойной точности на мантиссу и порядок.
Синтаксис #include
double frexp(double value, int * exponent);
Файл, содержащий math.h прототип
Описание frexp вычисляет мантиссу m (типа double, большее или равное 0.5 и меньше 1.0) и целое n, такое, что x равно m x 2^n. frexp сохраняет n в целой переменной, на которую указывает exponent.
Возвращаемое frexp возвращает мантиссу m. значение
Обработку ошибочных состояний для frexp можно мо- дифицировать с помощью функции matherr.
Переносимость frexp совместима с UNIX и поддерживается стандартом ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { double mantissa,number; int exponent; number = 8.0; mantissa = frexp(number,&exponent); printf("Число %1f равно %1f умножить на 2 в степени %d\n", number,mantissa,exponent); return 0; }

Fscanf

fscanf
Функция Выполняет форматированный ввод из потока.
Синтаксис #include
int fscanf(FILE * stream, char * format[, adress,...]);
Файл, содержащий stdio.h прототип
Описание fscanf сканирует посимвольно набор вводимых полей, считывая их из потока. Затем каждое поле из пото- ка форматируется в соответствии со спецификацией формата, которая передается fscanf в виде указа- теля на строку format. Полученное в результате этого поле fscanf запоминает в аргументах, пере- даваемых функции fscanf после параметра format. Количество аргументов должно совпадать с количес- твом спецификаций формата.
Описание спецификаций формата приведено в описа- нии функции scanf.
fscanf завершает сканирование отдельного поля при появлении пробела, являющегося разделителем, или при вводе поля, для которого указана ширина. Эти случаи обсуждаются в описании функции scanf.
Возвращаемое Функция fscanf возвращает количество успешно про- значение читанных, преобразованных и запомненных входных полей; возвращаемое значение не включает в себя прочитанные поля, которые не были сохранены.
Если fscanf делает попытку чтения в конце файла, то возвращается EOF. Если не было записано ни од- ного поля, возвращается значение 0.
Переносимость Функция fscanf поддерживается на системах UNIX и определена в стандарте Kernighan & Ritchie. Она поддерживается стандартом ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { int i; printf("Введите целое число:"); /* ввести из стандартного потока stdout целое число */ if(fscanf(stdin,"%d",&i)) printf("Целое равно:%d\n",i); else { fprintf(stderr,"Ошибка чтения целого\n"); exit(1); } return 0; }

Fseek

fseek
Функция Устанавливает указатель файла в потоке.
Синтаксис #include
int fseek(FILE * stream, long offset, int fromwhere);
Файл, содержащий stdio.h прототип
Описание Функция fseek устанавливает адресный указатель файла, соответствующий потоку stream, в новую по- зицию, которая расположена по смещению offset от- носительно места в файле, определяемого парамет- ром fromwhere.
Параметр fromwhere может иметь одно из трех зна- чений 0, 1 или 2, которые представлены тремя сим- волическими константами (определенными в файле stdio.h), следующим образом:
--------------------------------------------------- Параметр Размещение в файле fromwhere -------------------------------------------------- SEEK_SET (0) начало файла; SEEK_CUR (1) позиция текущего указателя файла; SEEK_END (2) конец файла (EOF); --------------------------------------------------
Функция fseek сбрасывает любой символ, записанный с помощью функции ungetc.
Функция fseek используется с операциями ввода/вы- вода в поток. При работе с дескриптором файла пользуйтесь функцией lseek.
После этой операции можно производить как ввод, так и вывод в поток.
Возвращаемое Функция fseek возвращает значение 0, если значение указатель файла успешно перемещен, и ненулевое значение в случае неудачного завершения.
Примечание. Функция fseek может вернуть нулевое значение даже в случае, если этого не было. Это происходит в результате того, что DOS, которая и перемещает указатель, не проверяет его установку. fseek возвращает индикатор ошибки только в слу- чае, если устройство или файл не открыты.
Переносимость Данная функция поддерживаются на системах UNIX и стандартом ANSI C.
Смотрите также
Пример:
#include
int main(void) { FILE *stream; stream = fopen("MYFILE.TXT", "r"); print("filesize of MYFILE.TXT is %ld bytes\n", filesize(stream)); } long filesize(FILE *stream); { long curpos,length; /* сохранить текущее положение указателя */ curpos = ftell(stream); /* перейти в конец файла */ fseek(stream, 0L, SEEK_END); /* получить текущее положение указателя */ length = ftell(stream); /* восстановить старое положение */ fseek(stream, curpos, SEEK_SET); return(length); }

Fsetpos

fsetpos
Функция Позиционирует указатель текущей позиции в файле, связанном с потоком stream.
Синтаксис #include
int fsetpos(FILE *stream, const fpos_t *pos);
Файл содержащий stdio.h прототип
Описание fsetpos устанавливает указатель текущей позиции файла, связанного с потоком stream в новую пози- цию, которая определяется значением, получаемым предшествующим вызовом функции fgetpos. fsetpos также сбрасывает признак конца файла, но не ока- зывает влияния на символы, помещаемые в поток функцией ungetc. После вызова fsetpos можно про- изводить как операции ввода, так и вывода.
Возвращаемое При успешном завершении fsetpos возвращает 0. При значение возникновении ошибки она возвращает ненулевое значение и устанавливает errno не равным 0.
Переносимость fsetpos поддерживается стандартом ANSI C.
Смотрите также
Пример:
#include
#include
void showpos(FILE *stream);
int main(void) { FILE *stream; fpos_t filepos; /* открыть файл для изменения */ stream = fopen("DUMMY.FIL","w+"); /* сохранить текущую позицию указателя */ fgetpos(stream,&filepos); /* записать в файл данные */ fprintf("stream,"Это тест"); /* вывести текущую позицию */ showpos(stream); /* установить новую позицию и вывести ее */ if(fsetpos(stream,&filepos) == 0) showpos(stream); else { fpritf(stderr,"Ошибка указателя файла\n"); exit(1); } /* закрыть файл */ fclose(stream); return 0; } void showpos(FILE *stream) { fpos_t pos; /* вывести текущее положение указателя */ fgetpos(stream,&pos); printf("Позиция указателя: %ld\n",pos); }

Fstat

fstat
Функция Получает информацию об открытом файле.
Синтаксис #include
int fstat(char * handle, struct stat * buff)
Файл, содержащий sys\stat.h прототип
Описание Функция fstat записывают информацию об открытом файле (или директории), связанным с дескриптором handle в структуру stat. Aргумент buff адресует структуру stat (определенную в файле sys\stat.h). Структура содержит следующие поля:
st_mode - битовая маска, дающая информацию о ре- жиме открытия файла;
st_dev - идентификатор дисковода, на котором был открыт файл, или номер handle, если файл находится на устройстве;
st_rdev - так же, как и st_dev;
st_nlink - присваевается целая константа 1;
st_size - размер открытого файла в байтах;
st_atime - ближайшее время открытия файла, во время которого он был модифицирован;
st_mtime - так же, как и st_atime;
st_ctime - так же, как и st_atime.
Структура stat содержит на три поля больше, чем перечислено выше, они содержат данные, которые под управлением DOS не имеют значения.
Битовая маска, дающая информацию о режиме откры- того файла, содержит следующие биты:
Один из следующих битов должен быть установлен:
S_IFCHR - установлен, если параметр handle указы- вает на устройство (fstat);
S_IFREG - установлен, если обычный файл определя- ется параметром handle
Один или оба следующих бита должны быть установ- лены:
S_IWRITE - установлен, если пользователь имеет разрешение на запись;
S_IREAD - установлен, если пользователь имеет разрешение на чтение.
Битовая маска также имеет биты чтения/записи, они устанавливаются в соответствии с режимом доступа к файлу.
Возвращаемое Если информация об открытом файле была успешно по- значение лучена, функция возвращают значение 0. В случае ошибки (невозможно получить информацию), функция возвращает -1 и присваивают переменной errno:
EBADF - Неверный номер файла.
Смотрите также
Пример:
#include
#include
#include
int main(void) { struct stat statbuf; FILE *stream; /* открыть файл для изменения */ if((stream = fopen("DUMMY.FIL","w+")) == NULL) { fprintf(stderr,"Не могу открыть файл.\n"); return 1; } fprintf(stream,"Это тест"); fflush(stream); /* получить информацию о файле */ fstat(fileno(stream),&statbuf); /* вывести полученную информацию */ if(statbuf.st_mode & S_IFCHR) printf("Это устройство\n"); if(statbuf.st_mode & S_IFREG) printf("Это файл\n"); if(statbuf.st_mode & S_IREAD) printf("Разрешение на чтение\n"); if(statbuf.st_mode & S_IWRITE) printf("Разрешение на запись"); printf("Метка диска:%c\n",'A'+statbuf.st_dev); printf("Размер в байтах: %ld\n",statbuf.st_size); printf("Время последнего открытия: %s\n", ctime(&statbuf.st_ctime)); return 0; }

Ftell

ftell
Функция Возвращает положение указателя текущей позиции файла.
Синтаксис #include
long int ftell(FILE *stream);
Файл, содержащий stdio.h прототип
Описание ftell возвращает положение указателя текущей позиции файла, связанного с потоком stream. Значение вы- дается в виде смещения в байтах относительно на- чала файла.
Значение, возвращаемое ftell, можно в дальнейшем использовать при вызове функции fseek.
Возвращаемое ftell возвращает положение указателя текущей пози- значение ции при успешном завершении. При ошибке возвращает -1L, и присваивает переменной errno положительное значение.
Переносимость ftell доступна на системах UNIX и поддерживается стандартом ANSI C.
Смотрите также
Пример:
#include
int main(void) { FILE *stream; stream = fopen("DUMMY.FIL","w+"); fprintf(stream,"Это тест"); printf("Указатель файла: %ld\n",ftell(stream)); return 0; }

Ftime

ftime
Функция Помещает текущее время в структуру типа timeb.
Синтаксис #include
void ftime(struct timeb *buf)
Файл, содержащий sys\timeb.h прототип
Описание ftime определяет текущее время и заполняет поля структуры типа timeb, на которую указывает пара- метр buf. Структура timeb определена следующим образом:
struct timed { long time; short millitm; short timezone; short dstflag; };
time - это поле содержит время в секундах с 00:00:00 1 января 1970 года по Гринвичскому мери- диану.
millitm - содержит часть секунды в миллисекундах.
timezone - содержит разницу в минутах между вре- менем по Гринвичу и местным временем. Это время вычисляется по направлению на запад от Гринвичс- кого меридиана. ftime определяет это время по со- держимому глобальной переменной timezone, которая устанавливается функцией tzset.
dstflag - равно 0, если летнее время не действу- ет, и не 0, в противном случае. Это поле опреде- ляется по глобальной переменной daylight (уста- навливаемой функцией tzset).
Примечание. Т.к. функция ftime вызывает функцию tzset, то вам нет необходимости это делать.
Возвращаемое Нет. значение
Переносимость Данная функция доступна в системе UNIX System V.
Смотрите также
Пример:
#include
#include
#include
#include
char *tzstr = "TZ=PST8PDT";
int main(void) { struct timeb t; putenv(tzstr); tzset();
ftime(&t); printf("%ld секунд с 1-1-70 по GMT\n",t.time); printf("плюс %d миллисекунд",t.millitm); printf("%d минут от GMT",t.timezone); printf("Летнее время %s действует", t.dstflag ? "":"не"); return 0; }

Fwrite

fwrite
Функция Записывает данные в поток.
Синтаксис #include
size_t fwrite(void * ptr, size_t size, size_t n, FILE * stream);
Файл, содержащий stdio.h прототип
Описание fwrite добавляет n элементов данных, каждое величиной size байт в данный выходной поток. Дан- ные записываются из ptr.
Общее число выведенных байт равно n*size.
ptr должен быть объявлен как указатель на некото- рый объект.
Возвращаемое При успешном завершении fwrite возвращает число значение выведенных элементов (не байт). При ошибке она возвращает меньшее число.
Переносимость fwrite доступна в системах UNIX и поддерживается стандартом ANSI C.
Смотрите также
Пример:
#include
struct mystruct { int i; char ch; } int main(void) { FILE *stream; struct mystruct s; /* открыть файл TEST.$$$ */ if((stream = fopen("TEST.$$$","wb"))==NULL) { fprintf(stderr,"не могу открыть файл\n"); return 0; } s.i = 0; s.ch = 'A'; /* вывод в файл */ fwrite(&s,sizeof(s),1,stream); fclose(stream); return 0; }

Описание функций Си

double value, int ndig, char

gcvt
Функция Преобразует число с плавающей точкой в символьную строку.
Синтаксис #include
char * gcvt( double value, int ndig, char *buf);
Файл, содержащий stdlib.h прототип
Описание gcvt преобразует value в строку символов в коде ASCII, ограниченную нулем, и запоминает строку в buf. Если возможно, то она получает ndig значащих цифр в формате F Фортрана. В противном случае строка будет в формате E функции printf (ее сразу же можно печатать). Она может подавлять задние ну- ли.
Возвращаемое gcvt возвращает адрес строки. значение
Переносимость gvct поддерживается системой UNIX. Она не опреде- лена в стандарте ANSI C, и поэтому мы не рекомен- дуем использовать ее для переносимых программ.
Смотрите также
Пример:
#include
#include
int main(void) { char str[25]; double num; sig = 5;
num = 9.876; gcvt(num,sig,str); printf("Строка = %s\n",str); num = -123.45; gcvt(num,sig,str); printf("Строка = %s\n",str); num = 0.6789e5; gcvt(num,sig,str); printf("Строка = %s\n",str); return 0; }

Функция Генерирует программное

geninterrupt
Функция Генерирует программное прерывание.
Синтаксис #include
void geninterrupt(int intr_num);
Файл, содержащий dos.h прототип
Описание Эта макрокоманда вызывает программное прерывание с номером, определяемым intr_num. Состояние регис- тров после вызова прерывания зависит от программы обработки этого прерывания.
Прерывание может сбросить регистры, используемые в Си, в непредсказуемое состояние.
Возвращаемое Нет. значение
Переносимость geninterrupt уникальна для 8086.
Смотрите также 6, 6
Пример:
#include
#include
void writechar(char ch);
int main(void) { clrscr(); gotoxy(80,25); writechar("*"); getch(); return 0; } /* Вывод символа в текущую позицию курсора */ /* использование функции BIOS для прокрутки экрана */ /* при выводе в позицию 80,25 */
void writechar(char ch) { struct text_info ti; gettextinfo(&ti); /* получить текущие установки */ _AH = 9; /* прерывание 10H, подфункция 9 */ _AL = ch; /* выводимый символ */ _BH = 0; /* страница */ _BL = ti.attribute /* атрибуты */ _CX = 1; /* фактор повторения */ geninterrupt(0x10); /* вывод символа */ }

Функция Выдает координаты последнего обращения

getarccoords
Функция Выдает координаты последнего обращения к функции arc.
Синтаксис #include
void far getarccoords(struct arccoordstype far *arccoords);
Файл, содержащий graphics.h прототип
Описание getarccoords заполняет структуру arccoords- type, на которую указывает arccoords, информацией о последнем вызове arc. Структура arccordstype оп- ределена в graphics.h следующим образом:
struct arccoordstype{ int x, y; int xstart, ystart, xend, yend; };
Элементы этой структуры используются для определе- ния центра (x,y),начальной (xstart, ystart) и ко- нечной (xend,yend) позиций дуги.Эти значения могут быть использованы если необходимо , чтобы линии пересекались на конце дуги.
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддерживающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; struct srccoordstype arcinfo; int midx,midy; int stangle = 45,endangle = 270; char sstr[80],estr[80];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx() / 2; midy = getmaxy() / 2; setcolor(getmaxcolor(1));
/* рисует дугу */ arc(midx,midy,stangle,endangle,100); getarccoords((&arcinfo);
/* преобразование информации в строки */ sprintf(sstr,"*- (%d, %d)",arcinfo.xstart,arcinfo.ystart); sprintf(sstr,"*- (%d, %d)",arcinfo.xend,arcinfo.yend); /* вывести информацию на экран */ outtextxy(arcinfo.xstart,arcinfo.ystart,estr); outtextxy(arcinfo.xend,arcinfo.xend,estr);
/* очистка */ getch(); closegraph(); return 0; }

Функция Возвращает текущее характеристическое отношение

getaspectratio
Функция Возвращает текущее характеристическое отношение (отношение ширины изображения к его высоте) графи- ческого режима.
Синтаксис #include
void far getaspectratio( int far *xasp, int far *yasp);
Файл, содержащий graphics.h прототип
Описание Фактор y-аспекта, *yasp, нормализуется к 10 000; на всех графических адаптерах, кроме VGA, *xasp ( фактор y-аспекта) меньше *yasp, т.к. пик- сел больше в высоту,чем в ширину.На VGA,который имеет "квадратный" пиксел, *xasp равно *yasp. В целом, соотношение между *yasp и *xasp следующее:
*yasp = 10000 *xasp
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int xasp,yasp,midx,midy;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx() / 2; midy = getmaxy() / 2; setcolor(getmaxcolor(1));
/* получить текущее характеристическое отношение */ getaspectratio(&xasp,&yasp);
/* нарисовать нормальную окружность */ circle(midx,midy,100); getch();
/* нарисовать окружность, вытянутую в ширину */ cleardevice(); setaspectratio(xasp/2,yasp); circle(midx,midy,100); getch();
/* нарисовать окружность, вытянутую в длину */ cleardevice(); setaspectratio(xasp,yasp/2); circle(midx,midy,100); getch();
/* очистка */ getch(); closegraph(); return 0; }

Функция Возвращает текущий цвет

getbkcolor
Функция Возвращает текущий цвет фона.
Синтаксис #include
int far getbkcolor(void);
Файл, содержащий graphics.h прототип
Описание getbkcolor возвращает текущий цвет фона. (cмотри подробности в таблице под setbkcolor.)
Возвращаемое getbkcolor возвращает текущий цвет фона. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддерживающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int bkcolor,midx,midy; char bkname[35];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx() / 2; midy = getmaxy() / 2; setcolor(getmaxcolor(1)); /* установить центрирование текста */ settextjustify(CENTER_TEXT,CENTER_TEXT); /* получить текущий цвет фона */ bkcolor = getbkcolor(); /* преобразовать его в строку */ itoa(bkcolor,bkname,10); strcat(bkname," - это текущий цвет фона"); /* вывести сообщение */ outtext(midx,midy,bkname); /* очистка */ getch(); closegraph(); return 0; }

Функция Вводит из потока

getc
Функция Вводит из потока символ.
Синтаксис #include
int getc(FILE *stream);
Файл, содержащий stdio.h прототип
Описание Функция getc представляет собой макрокоманду, ко- торая получает следующий по порядку символ из входного потока stream и увеличивает указатель те- кущего положения в потоке на 1.
Возвращаемое При успешном завершении функция getc возвращает считанный символ после предварительного преобразо- вания его в целое без расширения знака. При воз- никновении ситуации EOF или при ошибке она возвра- щает EOF.
Переносимость Функция поддерживаются на системах UNIX, описаны Керниганом и Ритчи. Поддерживаются стандартом ANSI C.
Смотрите также
Пример:
#include
int main(void) { char ch; printf("Введите символ :"); /* ввести символ из стандартного входного потока stdin */ ch = getc(stdin); printf("Был введен символ '%c'\n",ch); return 0; }

Функция Получает параметры контроля над

getcbrk
Функция Получает параметры контроля над прерыванием по Ctrl_Break.
Синтаксис #include
int getcbrk(void);
Файл, содержащий dos.h прототип
Описание Функция getcbrk использует системный вызов MS-DOS 0x33 для получения текущих параметров контроля над прерыванем Ctrl_Break.
Возвращаемое Функция getcbrk возвращает 0 если контроль над значение прерываниями выключен (off), и 1, если контроль включен (on).
Переносимость Функция уникальна для DOS.
Смотрите также
Пример:
#include
#include
int main(void) { if(getcbrk()) printf("Флаг Ctrl-Break включен\n"); else printf("Флаг Ctrl-Break выключен\n"); return 0; }

Функция Вводит символ

getch
Функция Вводит символ с консоли без эхопечати.
Синтаксис #include
int getch(void);
Файл, содержащий conio.h прототип
Описание Функция getch читает один символ, непосредственно с консоли, без вывода его на экран.
Возвращаемое getch возвращает введенный с клавиатуры символ. значение
Переносимость Функция уникальна для DOS.
Смотрите также
Пример:
#include
#include
int main(void) { int c; int extended = 0; c = getch(); if(!c) extended = getch(); if(extended) printf("Расширенный символ\n"); else printf("Не расширенный символ\n"); return 0; }

Функция Вводит символ из потока

getchar
Функция Вводит символ из потока stdin.
Синтаксис #include
int getchar(void);
Файл, содержащий stdio.h прототип
Описание getchar - это макрокоманда, вводящая сим- вол из потока stdin. Она определена следующим об- разом: getc(stdin).
Возвращаемое При успешном завершении функция getchar возвращает значение считанный символ после предварительного преобразо- вания его в целое без расширения знака. При воз- никновении ситуации EOF или при ошибке она возвра- щает EOF.
Переносимость Функция поддерживается на системах UNIX, описана Керниганом и Ритчи. Поддерживается стандартом ANSI C.
Смотрите также
Пример:
#include
int main(void) { char c; /* Замечание. getchar читает символы с stdin, который имеет буфер на одну строку. Поэтому она ничего не возвращает до тех пор, пока вы не нажмете Enter */ while((c=getchar())!='\n') printf("%c",c); return 0; }

и отображает его на

getche
Функция Вводит символ с консоли и отображает его на экране.
Синтаксис #include
int getche(void);
Файл, содержащий conio.h прототип
Описание Функция getche считывает один символ с консоли и одновременно отображает его в текущем текстовом окне на экране, использую напрямую видео-память или BIOS.
Возвращаемое getche возвращает символ, введенный с клавиатуры. значение
Переносимость getche уникальна для DOS.
Смотрите также
Пример:
#include
int main(void) { char ch; printf("Введите символ:"); ch = getche(); printf("\n Вы ввели символ '%c'\n",ch); return 0; }

Функция Возвращает текущий цвет

getcolor
Функция Возвращает текущий цвет рисунка.
Синтаксис #include
int far getcolor(void);
Файл, содержащий graphics.h прототип
Описание getcolor возвращает текущий цвет рисунка. Цвет рисования - это значение в которое устанав- ливаются пикселы, когда рисуются линии и т.д. Например, в режиме CGACO, палитра содержит 4 цве- та : цвет фона, светло зеленый, светло красный и желтый. В этом режиме, если getcolor возвращает 1, текущий цвет рисования - светло-зеленый.
Возвращаемое getcolor возвращает текущий цвет рисования. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int color,midx,midy; char colname[35];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx() / 2; midy = getmaxy() / 2; setcolor(getmaxcolor(1)); /* установить центрирование текста */ settextjustify(CENTER_TEXT,CENTER_TEXT); /* получить текущий цвет фона */ color = getcolor(); /* преобразовать его в строку */ itoa(color,colname,10); strcat(colname," - это текущий цвет рисования"); /* вывести сообщение */ outtext(midx,midy,colname); /* очистка */ getch(); closegraph(); return 0; }

Функция Получает текущую директорию для

getcurdir
Функция Получает текущую директорию для указанного устройства.
Синтаксис #include
int getcurdir(int drive, char * direc);
Файл, содержащий dir.h прототип
Описание Функция getcurdir получает имя текущей директо- рии для указанного устройства drive.
Параметр drive содержит номер устройства (0= по умолчанию, 1=A, и т.д.)
Параметр direc указывает на область памяти длиной MAXDIR, где хранится имя директории. Имя директо- рии - символьная строка с нулевым окончанием- не содержит спецификации устройства и не начинается на обратный слэш (\).
Возвращаемое Функция getcurdir возвращает 0 при успешном завер- значение шении и -1 при возникновении ошибки.
Переносимость Функция уникальна для DOS.
Смотрите также
getcwd
Функция Получает текущую рабочую директорию.
Синтаксис #include
char * getcwd(char * buf, int buflen);
Файл, содержащий dir.h прототип
Описание Функция getcwd получает полное имя маршрута для текущей рабочей директории (cwd), включая специ- фикацию устройства, до buflen байтов длиной и за- поминает его в переменной buf. Если длина полного имени маршрута (включая нулевое окончание) длин- нее buflen, вырабатывается ошибка.
Если параметр buf имеет значение NULL, буфер дли- ной n байтов будет выделен вам с помощью malloc. Затем вы можете освободить выделенный буфер, пе- редав значение, полученное функцией getcwd - фун- кции free.
Возвращаемое Функция getcwd возвращает параметр buf, в случае значение ошибки возвращается значение NULL.
Кроме того, если произошла ошибка, глобальная пе- ременная errno получает одно из следующих значе- ний:
ENODEV - нет такого устройства; ENOMEM - не хватает памяти; ERANGE - результат превышает допустимый порог.
Переносимость Функция уникальна для DOS.
Смотрите также
Пример:
#include
#include
int main(void) { char buffer[MAXPATH]; getcwd(buffer,MAXPATH); printf("Текущая директория: %s\n",buffer); return 0; }

Функция Получает системную

getdate
Функция Получает системную дату.
Синтаксис #include
void getdate(struct date * datep);
Файл, содержащий dos.h прототип
Описание Функция getdate заполняет структуру date (с указателем datep) системной информацией о текущей дате.
Структура date определяется следующим образом:
struct date { int da_year; /* текущий год */ char da_day; /* день месяца */ char da_mon; /* месяц (1= янв.) */ };
Возвращаемое Нет. значение
Переносимость Функция уникальна для DOS.
Смотрите также
Пример:
#include
#include
int main(void) { struct date d; getdate(&d); printf("Год :%d\n",d.da_year); printf("Месяц:%d\n",d.da_mon); printf("День:%d\n",d.da_day); return 0; }

Функция Возвращает структуру определения

getdefaultplatte
Функция Возвращает структуру определения палитры.
Синтаксис #include
struct palettetype *far getdefaultpalette(void);
Файл, содержащий graphics.h прототип
Описание getdefaultpalette находит структуру palettetype, которая содержит палитру, первона- чально установленную драйвером во время выполне- ния initgraph.
Возвращаемое getdefaultpalette возвращает указатель на значение палитру, установленную по умолчанию теку- щим драйвером во время инициализации этого драй- вера.
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; /* указатель на структуру описания политры */ struct palettetype far *ptr = NULL; int i;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } /* получить указатель на структуру */ ptr = getdefaultpalette(); for(i=0;isize;i++); { printf("цвета[%d] = %d\n",i,ptr->colors[i]); getch(); } /* очистка */ getch(); closegraph(); return 0; }

о наличии свободного места на

getdfree
Функция Получает информацию о наличии свободного места на диске.
Синтаксис #include
void getdfree(unsigned char drive, struct dfree *dtable);
Файл, содержащий dos.h прототип
Описание Функция getdfree просматривает устройство, задава- емое параметром drive (0= по умолчанию, 1=A, и т. д.) и заполняет структуру dfree с адресным указа- телем dtable характеристиками соответствующего диска.
Структура dfree описывается следующим образом:
struct dfree { unsigned df_avail; /* свободные кластеры */ unsigned df_total; /* общее количество клас- теров */ unsigned df_bsec; /* байтов на сектор */ unsigned df_sclus; /* секторов на кластер */ };
Возвращаемое Функция getdfree не возвращает никакого значения. значение В случае ошибки параметру df_sclus в структуре dfree присваивается значение 0xFFFF.
Переносимость Функция уникальна для DOS.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { struct dfree free; long avail; int drive; drive = getdisk(); getdfree(dreve+1,&free); if(free.df_clus == 0xFFFF) { printf("Ошибка getdfree\n"); exit(1); } avail = (long) free.df_avail * (long) free.df_bsec * (long) free.df_sclus; printf("На диске %c имеется %ld свободных байт\n",'A'+drive,avail); return 0; }

Функция Получает номер текущего

getdisk
Функция Получает номер текущего устройства.
Синтаксис #include
int getdisk(void);
Файл, содержащий dir.h прототип
Описание Функция getdisk получает номер текущего устройства и возвращает целое число : 0=A:; 1=B:; 2=C:; и т.д. (эквивалентна системному вызову DOS 0x19).
Возвращаемое Функция getdisk возвращает номер текущего значение устройства.
Переносимость Функция уникальна для DOS.
Смотрите также
Пример:
#include
#include
int main(void) { int disk; disk = getdisk()+'A'; printf("Текущий дисковод: %c\n",disk); return 0; }

Функция Возвращает указатель на строку,

getdrivername
Функция Возвращает указатель на строку, содержащую имя текущего графического драйвера.
Синтаксис #include
char *far getdrivername(void)
Файл, содержащий graphics.h прототип
Описание После вызова initgraph, getdrivername воз- вращает имя драйвера, который загружен в данный момент.
Возвращаемое getdrivername возвращает указатель на стро- значение ку, которая содержит имя текущего драйвера.
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; /* указатель на имя драйвера */ char *drivername;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } setcolor(getmaxcolor()); /* получить имя текущего используемого драйвера */ drivername = getdrivername(); /* установить выравнивание текста */ settextjustify(CENTER_TEXT,CENTER_TEXT); /* вывести имя драйвера */ outtextxy(getmaxx()/2,getmaxy()/2,drivername); /* очистка */ getch(); closegraph(); return 0; }

Функция Получает адрес DTA

getdta
Функция Получает адрес DTA (область связи с диском).
Синтаксис #include
char far * getdta(void);
Файл, содержащий dos.h прототип
Описание Функция getdta возвращает текущее значение адреса DTA. В малых и средних моделях памяти предполага- ется, что сегментом является текущий сегмент дан- ных. Если вы используете исключительно язык CИ, то эта ситуация сохраняется, если же вы будете использовать подпрограммы на Ассемблере, адрес DTA может оказаться в любом месте.
В компактных, больших и сверхбольших моделях па- мяти адрес, возвращаемый функцией getdta, являет- ся реально любым адресом и может быть расположен за пределами программы.
Возвращаемое Функция getdta возвращает "дальний" указатель на значение текущую DTA.
Переносимость Функция уникальна для DOS.
Смотрите также (структура),
Пример:
#include
#include
int main(void) { char far *dta; dta = getdta(); printf("Адрес области связи с диском: %Fp\n",dta); return 0; }

Функция Получает символьную строку, содержащую

getenv
Функция Получает символьную строку, содержащую параметры операционной среды.
Синтаксис #include
char *getenv(const char *name);
Файл, содержащий stdlib.h прототип
Описание Функция getenv возвращает значение указанной пере- менной операционной среды. Имя переменной может быть задано символами как верхнего так и нижнего регистра, но оно должно включать символ равно (=). Если указанная переменная не определена, то функция возвращает пустую строку.
Возвращаемое При успешном завершении функция getenv возвращает значение указатель на значение, соответствующее name. Если заданная переменная name не определена, фун- кция getenv возвращает пустую строку.
Примечание. Элементы окружения нельзя изменять непосредственно. Если вы хотите изменить значение переменной окружения, необходимо воспользоваться функцией putenv.
Переносимость Функции поддерживаются на системах UNIX и стандар- том ANSI C.
Смотрите также ,
Пример:
#include
#include
int main(void) { char *s; s = getenv("COMSPEC"); /* получить параметр среды */ printf("Командный процессор находится: %s\n",s); return 0; }

Функция Получает информацию из таблицы

getfat
Функция Получает информацию из таблицы размещения файлов указанного дисковода.
Синтаксис #include
void getfat(unsigned char drive, struct fatinfo *dtable);
Файл, содержащий dos.h прототип
Описание Функция getfat возвращает информацию из таблицы размещения файлов согласно спецификации устройст- ва, заданной в параметре drive(0 = по умолчанию, 1=A:; 2=B:; и т.д.). Указатель dtable является адресом структуры fatinfo, которая заполняется информацией из таблицы.
Структура fatinfo, заполняемая функцией getfat описывается следующим образом:
struct fatinfo { char fi_sclus; /* секторов на кластер */ char fi_fatid; /* байт идентификации таблицы FAT (таблицы размещения файлов) int fi_nclus; /* количество кластеров */ int fi_busec; /* количество байтов в секто- ре */ };
Возвращаемое Отсутствует. значение
Переносимость Функция уникальна для DOS.
Смотрите также
Пример:
#include
#include
#include
int main(void) { struct fatinfo diskinfo; int flag = 0; printf("Вставте дискету в дисковод 'A'\n"); getch(); getfat(1,&diskinfo); /* получение инф-ции о дисководе */ printf("Дисковод A:"); switch((unsigned char)diskinfo.fatid) { case 0xFD: printf("360 Кбайт, одинарной плотности\n"); break; case 0xF9: printf("5 1/4'' - 1.2 Mбайт или 3 1/2''- 720 Кбайт"); break; case 0xF0: printf("3 1/2 - 1.44Мбайт\n"); break; default: printf("Неформатирован\n"); flag = 1; } if(!flag) { printf("Секторов на кластер: %5d\n",diskinfo.fi_sclus); printf("Количество кластеров: %5d\n",diskinfo.fi_nclus); printf("Байт на сектор: %5d\n",diskinfo.fi_bysec); } return 0; }

Функция Получает информацию из таблицы

getfatd
Функция Получает информацию из таблицы размещения файлов.
Синтаксис #include
void getfatd(struct fatinfo *dtable);
Файл, содержащий dos.h прототип
Описание Функция getfatd возвращает информацию из таблицы размещения файлов дисковода, используемого по умолчанию. Указатель dtable является адресом структуры fatinfo, которая заполняется информаци- ей из таблицы.
Структура fatinfo, заполняемая функцией getfat, описывается следующим образом:
struct fatinfo { char fi_sclus; /* секторов на кластер */ char fi_fatid; /* байт идентификации таблицы FAT (таблицы размещения файлов) int fi_nclus; /* количество кластеров */ int fi_busec; /* количество байтов в секто- ре */ };
Возвращаемое Отсутствует. значение
Переносимость Функция уникальна для DOS.
Смотрите также
Пример:
#include
#include
int main(void) { struct fatinfo diskoinfo; getfatd(&diskinfo); /* получить информацию о дисководе */ printf("Дисковод по умолчанию:"); printf("Секторов на кластер: %5d\n",diskinfo.fi_sclus); printf("байт FAT ID: %5X\n",diskinfo.fi_fatid & 0xFF); printf("Количество кластеров: %5d\n",diskinfo.fi_nclus); printf("Байт на сектор: %5d\n",diskinfo.fi_bysec); return 0; }

в память определенный пользователем шаблон

getfillpattern
Функция Копирует в память определенный пользователем шаблон заполнения.
Синтаксис #include
void far getfillpattern(char far *pattern);
Файл, содержащий graphics.h прототип
Описание getfillpattern копирует шаблон заполнеия, определенный пользователем и установленный с по- мощью setfillpattern, в 8-битную область, на ко- торую указывает pattern. pattern - это указатель на последовательность из 8 байт, где каждый байт соответствует 8 пикселям шаблона. Всякий раз, когда бит устанавливается в 1, соответствующий пиксель отображается на экране. Например, следую- щий определенный пользователем образец приведет к поклеточному рисунку:
char checkboard[8] = { 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55 };
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int maxx,maxy; char pattern[8] = {0x00,0x70,0x20,0x27,0x25,0x27,0x04,0x04);
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } maxx = getmaxx(); maxy = getmaxy(); setcolor(getmaxcolor()); /* выбрать пользовательский шаблон */ setfillpattern(pattern,getmaxcolor()); /* заполнить экран с помощью этого шаблона */ bar (0,0,maxx,maxy); getch(); /* получить текущий шаблон */ getfillpattern(pattern); /* изменить его */ pattern[4] -= 1; pattern[5] -= 2; pattern[6] -= 3; pattern[7] -= 4; /* установить новый шаблон */ setfillpattern(pattern,getmaxcolor()); /* заполнить им экран */ bar(0,0,maxx,maxy); /* очистка */ getch(); closegraph(); return 0; }

Функция Получает информацию

getfillsettings
Функция Получает информацию о текущем шаблоне и цвете заполнения.
Синтаксис #include
void far getfillsettings(struct fillsettingstype far *fillinfo);
Файл, содержащий graphics.h прототип
Описание getfillsettings заполняет структуру fillsettingstype, на которую указывает fillinfo информацией о текущем шаблоне и цвете заполнения. fillsettingstype определяется в graphics.h следу- ющим образом:
struct fillsettingstype{ int pattern; /* текущий шаблон заполнения */ int color; /* текущий цвет заполнения */ };
Функции bar, bar3d, fillpoly, floodfill и pieslice целиком заполняют область текущим шабло- ном заполнения в текущем цвете заполнения. Сущес- твует 11 видов шаблонов заполнения (сплошное, крестообразное, точечное и т. д.) Символические имена для встроенных шаблонов обеспечиваются пе- речисляемым типом fill_patterns в graphics.h. (смотри таблицу, приведенную ниже). Кроме этого, вы можете определить свои собственные шаблоны.
Если pattern равен 12 (USER_FILL), то в данное время используется шаблон, определяемый пользова- телем; в противном случае pattern задает номер встроенного шаблона. Перечисляемый тип fill_patterns, заданный в graphics.h задает имя встроенного шаблона заполнения и индикатор для шаблона, определяемого пользователем.
имя значение описание
EMPTY_FILL 0 заполнение цветом фона SOLID_FILL 1 сплошное заполнение цветом заполнения LINE_FILL 2 заполнение ______ LSTLASH_FILL 3 заполнение ////// SLASH_FILL 4 заполнение /// толстой линией BKSLASH_FILL 5 заполнение \\\ толстой линией LTBKSLASH_FILL 6 заполнение \\\\ HATCH_FILL 7 светлая штриховка сеткой XHATCH_FILL 8 крестообразная штриховка INTERLEAVE_FILL 9 тканеобразная штриховка WIDE_DOT_FILL 10 заполнение редкими точками CLOSE_DOT_FILL 11 заполнение частыми точками USER_FILL 12 шаблон заполнения, определяемый пользователем
Все, кроме EMPTY_FILL заполняют текущим цветом заполнения; EMPTY_FILL использует текущий цвет фона.
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.


Смотрите также
Пример:
#include
#include
#include
#include
/* имена поддерживаемых типов заполнения */ char *fname[] = {"EMPTY_FILL", "SOLID_FILL", "LINE_FILL", "LSTLASH_FILL", "SLASH_FILL", "BKSLASH_FILL", "LTBKSLASH_FILL", "HATCH_FILL", "XHATCH_FILL", "INTERLEAVE_FILL", "WIDE_DOT_FILL", "CLOSE_DOT_FILL", "USER_FILL" };
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; struct fillsettingstype fillinfo; int maxx,maxy; char patstr[40],colstr[40];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } maxx = getmaxx()/2; maxy = getmaxy()/2; /* получить информацию о текущем шаблоне и цвете */ getfillsettings(*fillinfo); /* преобразовать в строку */ sprintf(patstr,"Тип заполнения :%s.",fname[fillinfo.pattern]); sprintf(colstr,"Цвет :%d",fillinfo.color); /* вывести информацию */ settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(midx,midy,patstr); outtextxy(midx,midy+2*textheight("W"),colstr); /* очистка */ getch(); closegraph(); return 0; }

и время создания или последней

getftime
Функция Получает дату и время создания или последней модификации файла.
Синтаксис #include
int getftime(int handle, struct ftime * ftimep);
Файл, содержащий io.h прототип
Описание Функция getftime выдает время и дату создания для файла, соответствующего параметру handle, полу- ченному при открытии файла. Структура ftime с ад- ресным указателем ftimep заполняется данными о времени создания файла.
Структура ftime описывается следующим образом:
struct ftime { unsigned ft_tsec:5; /* две секунды */ unsigned ft_min:6; /* минуты */ unsigned ft_hour:5; /* часы */ unsigned ft_day:5; /* день */ unsigned ft_month:4; /* месяц */ unsigned ft_year:7; /* год-1980 */ }
Возвращаемое При успешном завершении возвращает 0. Если произошла значение ошибка, возвращается значение -1 и глобальной пере- менной errno присваивается значение одной из сле- дующих констант:
EINVFNC - Неверный номер функции. EBADF - Неверный номер файла.
Переносимость Функция уникальна для DOS.
Смотрите также
Пример:
#include
#include
int main() { FILE *stream; struct ftime ft; if((stream = fopen("TEST.$$$","wt"))== NULL) { fprintf(stderr,"Не могу открыть файл\n"); return 1; } getftime(fileno(stream),&ft); printf("Время модификации файла:%02u:%02u,%02u\n", ft.ft_hour,ft.ft_min,ft.ft_tsec/2); printf("Дата: %02u%02u%04u\n",ft.ft_month,ft.ft_day, ft.ft_year+1980); return 0; }

Функция Возвращает текущий графический

getgraphmode
Функция Возвращает текущий графический режим.
Синтаксис #include
int far getgraphmode(void)
Файл, содержащий graphics.h прототип
Описание Ваша программа должна успешно выполнить вызов initgraph до вызова getgraphmode. Перечис- ляемый тип graphics_mode, определенный в graphics.h задает имена встроенных графических режимов. Для ознакомления с таблицей,отображающей эти значения, следует обратиться к описанию initgraph.
Возвращаемое getgraphmode возвращает графический режим, значение установленный integraph или setgraphmode.
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int midx,midy,mode; char numname[80],modename[80];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx()/2; midy = getmaxy()/2; /* получить код режима */ mode = getgraphmode(); sprintf(numname,"Номер режима: %d",mode); sprintf(modename,"Текущий графический режим: %s\n",getmodename(mode)); /* вывести информацию */ settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(midx,midy,numname); outtextxy(midx,midy+2*textheight("W"),modename); /* очистка */ getch(); closegraph(); return 0; }

в битовый образ некоторой области

getimage
Функция Запоминает в битовый образ некоторой области эк- рана.
Синтаксис #include
void far getimage(int left, int top, int right,int bottom, void far *bitmap);
Файл, содержащий graphics.h прототип
Описание getimage копирует образ c экрана в память. left, top, right и bottom определяют область эк- рана прямоугольной формы, которая будет скопиро- вана. bitmap указывает на область в памяти, куда записывается битовый образ. Первые два слова этой области задают ширину и высоту прямоугольника, оставшиеся определяют сам образ.
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
#include
void save_screen(void far *buf[4]); void restore_screen(void far *buf[4]); int maxx,maxy;
int main(void) { int graphdriver = DETECT, gmode, errorcode; void far *ptr[4];
/* автоматическое определение драйвера и режима */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } maxx = getmaxx(); maxy = getmaxy(); /* нарисовать на экране изображение */ rectangle(0,0,maxx,maxy); line(0,0,maxx,maxy); line(0,maxx,maxy,0) save_screen(ptr); /* сохранить экран */ getch(); /* пауза */ cleardevice(); /* обнуление экрана */ restore_screen(ptr); /* восстановление экрана */ getch(); /* пауза */
closegraph(); return 0; }
void save_screen(void far *buf[4]) { unsigned size; int ystart=0,yend,yincr,block; yincr = (maxy+1)/4; yend = yincr; size = imagesize(0,ystart,maxx,yend); /* получить размер изо- браженияв байтах */ for(block = 0; block

Функция Получает текущий цвет линии,

getlinesttings
Функция Получает текущий цвет линии, шаблон и толщину.
Синтаксис #include
void far getlinesettings(struct linesettingstype far *lineinfo);
Файл, содержащий graphics.h прототип
Описание getlinesettings заполняет структуру linesettings, на которую указывает параметр lineinfo информаци- ей, о текущем типе линий, толщине и шаблоне.
Структура linesettingstype определена в graphics.h следующим образом:
struct linesettingstype{ int linestyle; unsigned upattern; int thickness; };
linestyle определяет тип линий, который будет ис- пользоваться ( непрерывная, пунктир, штрихпунк- тир, штриховая). Перечисляемый тип line_styles, определенный в graphics.h, дает символические имена этим операциям:
------------------------------------------- Название Знач. Описание ------------------------------------------- SOLID_LINE 0 сплошная DOTTED_LINE 1 пунктир CENTER_LINE 2 штрихпунктир DASHED_LINE 3 штриховая USERBIT_LINE 4 тип линии, заданный пользователем -------------------------------------------
thickness определяет, будут ли последующие линии тонкими или толстыми.
------------------------------------------- Название Знач. Описание ------------------------------------------- NORM_WIDTH 1 толшина в 1 пиксель THICK_WIDTH 3 толщина в 3 пикселя --------------------------------------------
upattern -это 16-битный шаблон, который использу- ется, только когда linestyle равен USERBIT_LINE (4). В этом случае каждый бит в шаблоне, установ- ленный в 1, соответствует пикселю на линии в те- кущем цвете. Например, сплошной линии соответстс- вует upattern равный 0xFFFF ( рисуются все пиксе- ли), а пунктиру соответствует upattern, равный 0x3333 или 0x0F0F. Если же параметр linestyle в setlynestyle не равен USERBIT_LINE (!=4), то upattern поддерживается, но игнорируется.
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.


Смотрите также
Пример:
#include
#include
#include
#include
/* имена поддерживаемых типов линий */ char lname[] = {"SOLID_LINE", "DOTTED_LINE", "CENTER_LINE", "DASHED_LINE", "USERBIT_LINE" };
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; struct linrsettingstype lineinfo; int midx,midy; char lstyle[80],lpattern[80],lwigth[80];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx()/2; midy = getmaxy()/2; /* получить информацию о типе линии */ getlinesettings(&lineinfo); /* преобразовать в строки */ sprintf(lstyle,"Тип линии: %s\n",lname[lineinfo.linestyle]); sprintf(lpattern,"Шаблон определяемый пользователем: 0x%F", lineinfo.upattern); sprintf(lwigth,"Толщина линии: %d\n",lineinfo.thickness);
/* вывести информацию */ settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(midx,midy,lstyle); outtextxy(midx,midy+2*textheight("W"),lpattern); outtextxy(midx,midy+4*textheight("W"),lwigth); /* очистка */ getch(); closegraph(); return 0; }

Функция Возвращает максимальное значение цвета,

getmaxcolor
Функция Возвращает максимальное значение цвета, которое может быть передано функции setcolor.
Синтаксис #include
int far getmaxcolor(void);
Файл, содержащий graphics.h прототип
Описание getmaxcolor возвращает наивысшее действи- тельное значение цвета для текущего графического драйвера и режим,который может быть передан setcolor.
Например, c 256K EGA, getmaxcolor будет всегда возвращать 15. Это значит, что допустим любой вы- зов setcolor со значением от 0 до 15. В CGA в ре- жиме высокого разрешения или в монохромном адап- тере Hercules getmaxcolor возвращает значение 1, т.к. эти адаптеры поддерживают только два цвета рисования: 0 или 1.
Возвращаемое getmaxcolor возвращает наивысшее допусти- значение мое значение цвета.
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int midx,midy; char colstr[80];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx()/2; midy = getmaxy()/2;
/* получить информацию о цвете и преобразовать в строку */ sprintf(colstr,"Этот адаптер поддерживает 0..%d цветов", getmaxcolor()); /* вывести информацию */ settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(midx,midy,colstr); /* очистка */ getch(); closegraph(); return 0; }

Функция Возвращает максимальный номер режима

getmaxmode
Функция Возвращает максимальный номер режима для текущего драйвера.
Синтаксис #include
int far getmaxmode(void);
Файл, содержащий graphics.h прототип
Описание getmaxmode позволяет вам найти максимальный номер режима для текущего загруженного драйвера, непосредственно из этого драйвера. Это дает ему преимущество над getmoderange, который работает только с драйверами Borland. Минимальный режим - 0.
Возвращаемое getmaxmode возвращает максимальный номер значение режима для текущего драйвера.
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int midx,midy; char modestr[80];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx()/2; midy = getmaxy()/2;
/* получить информацию о режиме и преобразовать в строку */ sprintf(modestr,"Этот адаптер поддерживает режимы 0..%d", getmaxmode()); /* вывести информацию */ settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(midx,midy,modestr); /* очистка */ getch(); closegraph(); return 0; }

в режиме 320х200, getmaxx возвра-

getmaxx
Функция Возвращает максимальную координату х экрана.
Синтаксис #include
int far getmaxx(void);
Файл, содержащий graphics.h прототип
Описание getmaxx возвращает максимальное (относи- тельно экрана) значение х для текущего драйвера и режима.
Например, в CGA в режиме 320х200, getmaxx возвра- щает 319. getmaxx неоценимо для центрирования, определения границ в oбласти экрана и т. д.
Возвращаемое getmaxx возвращает максимальную координату значение х экрана.
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int midx,midy; char xrange[80],yrange[80];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx()/2; midy = getmaxy()/2;
/* преобразовать в строку информацию о максимальном разрешении */ sprintf(xrange,"Диапазон значений х: 0..%d",getmaxx()); sprintf(yrange,"Диапазон значений y: 0..%d",getmaxy()); /* вывести информацию */ settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(midx,midy,xrange); outtextxy(midx,midy+textheight("W"),yrange); /* очистка */ getch(); closegraph(); return 0; }

y для текущего значения драйвера

getmaxy
Функция Возвращает максимальную координату y экрана.
Синтаксис #include
int far getmaxy(void);
Файл, содержащий graphics.h прототип
Описание getmaxy возвращает максимальное (относи- тельно экрана) значение y для текущего значения драйвера и режима.
Например, в CGA в режиме 320х200, getmaxy возвра- щает 199. getmaxy неоценимо для центрирования, определения границ в oбласти экрана и т. д.
Возвращаемое getmaxy возвращает максимальную координату значение y экрана.
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int midx,midy; char xrange[80],yrange[80];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx()/2; midy = getmaxy()/2;
/* преобразовать в строку информацию о максимальном разрешении */ sprintf(xrange,"Диапазон значений х: 0..%d",getmaxx()); sprintf(yrange,"Диапазон значений y: 0..%d",getmaxy()); /* вывести информацию */ settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(midx,midy,xrange); outtextxy(midx,midy+textheight("W"),yrange); /* очистка */ getch(); closegraph(); return 0; }

Функция Возвращает указатель на строку,

getmodename
Функция Возвращает указатель на строку, содержащую имя указанного графического режима.
Синтаксис #include
char *far getmodename(int mode_number);
Файл, содержащий graphics.h прототип
Описание getmodename принимает номер графического режима как входной параметр и возвращает строку, содер- жащую имя текущего графического режима. Имена ре- жимов встроены в каждый драйвер. Возвращаемое значение ("320x200 CGA", "640x200 CGA", и т.д.) используется для построения меню или отображения статуса.
Возвращаемое getmodename возвращает указатель на строку значение с именем графического режима.
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int midx,midy,mode; char numname[80],modename[80];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx()/2; midy = getmaxy()/2; /* получить код режима */ mode = getgraphmode(); sprintf(numname,"Номер режима: %d",mode); sprintf(modename,"Текущий графический режим: %s\n",getmodename(mode)); /* вывести информацию */ settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(midx,midy,numname); outtextxy(midx,midy+2*textheight("W"),modename); /* очистка */ getch(); closegraph(); return 0; }

Функция Получает диапазон режимов для

getmoderange
Функция Получает диапазон режимов для данного графиче- ского драйвера.
Синтаксис #include
void far getmoderange(int graphdriver, int far *lomode, int far *himode);
Файл, содержащий graphics.h прототип
Описание getmoderange получает диапазон допустимых графических режимов для заданного графического драйвера graphdriver. Наименьшее допустимое зна- чение режима возвращается в *lomode, а наивысшее допустимое значение в *himode. Если graphdriver определяет несуществующий графический драйвер, *lomonade и *himonade устанавливаются в -1. Если значение grapgdriver равно -1, будут возвращены режимы текущего загруженного драйвера.
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int midx,midy; int low,high; char mrange[80];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx()/2; midy = getmaxy()/2; /* получить диапазон, допустимых для данного драйвера режимов */ mode = getmoderange(gdriver,&low,&high); sprintf(mrange,"Драйвер поддерживает режимы в диапазоне: %d..%d", low,high); /* вывести информацию */ settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(midx,midy,mrange); /* очистка */ getch(); closegraph(); return 0; }

Функция Возвращает размер справочной таблицы

getpalettesize
Функция Возвращает размер справочной таблицы цветов палитры.
Синтаксис #include
int far getpalettesize(void);
Файл, содержащий graphics.h прототип
Описание getpalettesize используется для определения того, как много элементов палитры может быть установле- но для текущего графического режима. Например, EGA в цветовом режиме возвращает 16.
Возвращаемое getpalettesize возвращает количество элементов значение в текущей палитре.
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int midx,midy; char psize[80];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx()/2; midy = getmaxy()/2; /* преобразовать в строку число элементов палитры */ sprintf(psize,"Палитра имеет %d изменяемых элементов", getpalettesize()); /* вывести информацию */ settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(midx,midy,psize); /* очистка */ getch(); closegraph(); return 0; }

Функция Вводит

getpass
Функция Вводит пароль.
Синтаксис #include
char *getpass(char *prompt);
Файл, содержащий conio.h прототип
Описание Функция getpass считывает пароль с системной кон- соли после выдачи на экран специального сообщения - символьной строки с нулевым окончанием (prompt) и отменяет отображение пароля на экране. Возвра- щаемый в результате работы функции указатель ад- ресует строку символов с нулевым окончанием дли- ной до 8 символов (не считая нулевое окончание)- пароль.
Возвращаемое Возвращаемое значение - это указатель на строку значение символов типа static, которая перезаписывается при каждом вызове.
Переносимость Функция поддерживается на системах UNIX.
Смотрите также
Пример:
#include
int main(void) { char *password; password = getpass("Введите пароль:"); cprintf("Пароль: %s\r\n",password); return 0; }

Функция Получает идентификатор процесса для

getpid
Функция Получает идентификатор процесса для программы.
Синтаксис #include
unsigned getpid(void);
Файл, содержащий process.h прототип
Описание Идентификатор процесса идентифицирует программу. Этот параметр пришел из мультизадачных операцион- ных систем типа UNIX, где процесс идентифицирует- ся уникальным номером.
Возвращаемое getpid возвращает адрес сегмента psp программы. значение
Переносимость Поддерживается системой UNIX.
Смотрите также переменная).
Пример:
#include
#include
int main(void) { printf("Идентификатор процесса данной программы = %X\n", getpid()); printf("Под DOS - это адрес сегмента PSP\n"); return 0; }

Функция Возвращает цвет заданной

getpixel
Функция Возвращает цвет заданной точки.
Синтаксис #include
unsigned far getpixel(int x, int y);
Файл, содержащий graphics.h прототип
Описание getpixel получает цвет точки с координатами (x,y).
Возвращаемое Возвращает цвет заданного пикселя. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
#include
#define PIXEL_COUNT 1000 #define DELAY_TIME 100 /* в миллисекундах */
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int x,y,i,color,maxx,maxy,maxcolor,seed;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } maxx = getmaxx(); maxy = getmaxy(); maxcolor = getmaxcolor()+1; while(!kbhit()) { /* сбросить генератор случайных чисел */ seed = random(32767); stand(seed); for(i=0;i

Функция Получает адрес префикса программного

getpsp
Функция Получает адрес префикса программного сегмента (psp).
Синтаксис #include
unsigned getpsp(void);
Файл, содержащий dos.h прототип
Описание Функция getpsp получает адрес префикса программно- го сегмента (PSP) посредством системного вызова DOS 0x62.
Данный вызов поддерживается только в операционных системах DOS версий 3.x. Для версий MS-DOS 2.x и 3.x можно использовать глобальную переменную _psp, устанавливаемую стартовым кодом.
Возвращаемое Функция getpsp возвращает адрес сегмента PSP. значение
Переносимость Функция уникальна для DOS версии 3.0 и не под- держивается в более ранних версиях DOS.
Смотрите также .
Пример:
#include
#include
int main(void) { static char command[128]; char far *cp; int len,l; printf("Префикс программного сегмента: %x\n",getpsp()); /* _psp получает адрес префикса программного сегмента. Остаток командной строки хранится в psp по смещению 80H относительно начала psp. Ниже показано, как можно полу- чить эти аргументы. */ cp = MK_FP(_psp,0x80); len = *cp; for(i=0; i

Функция Получает строку символов из

gets
Функция Получает строку символов из потока.
Синтаксис #include
char *gets(char *s);
Файл, содержащий stdio.h прототип
Описание Функция gets читает строку символов, оканчиваю- щуюся символом перевода строки в переменную *s из стандартного входного потока stdin. Данная сим- вольная строка оканчивается символом перехода на новую строку, который при записи в *s заменяется на нулевое окончание (\0).
В отличие от scanf, gets позволяет вводить стро- ки, содержащие символы пробела и табуляции. Все, что было введено до перевода каретки, помещается в s.
Возвращаемое При успешном завершении, функция gets возвращает значение строку s; при достижении конца файла (EOF) или ошибке возвращается NULL.
Переносимость Функции поддерживаются на системах UNIX и стандар- том ANSI C.
Смотрите также
Пример:
#include
int main(void) { char string[133]; printf("Введите строку:"); gets(string); printf("Cтрока = '%s'\n,string); }

int left, int top, int

gettext
Функция Копирует текст с экрана в память.
Синтаксис #include
int gettext( int left, int top, int right, int bottom, void *destin);
Файл содержащий conio.h прототип
Описание gettext запоминает содержимое прямоугольника на текстовом экране с размерами, определяемыми пара- метрами left, top, right, bottom, в области памя- ти, на которую указывает параметр destin.
Все координаты являются абсолютными координатами экрана, а не относительными в зависимости от ок- на. Левый верхний угол имеет координаты (1,1).
gettext считывает содержимое экрана последова- тельно слева направо и сверху вниз.
Каждая позиция на экране требует для хранения 2 байта: первый байт - это код символа а второй - его атрибуты. Т.о. для хранения прямоугольника шириной w и высотой h требуется h*w*2 байт.
Возвращаемое В случае успешного завершения gettext возвращает значение 1. В случае ошибки (если вы, например, задали ко- ординаты, выходящие за пределы экрана для данного режима) она возвращает 0.
Переносимость gettext работает только на системах совместимых с IBM PC и совместимых по BIOS.
Смотрите также
Пример:
#include
char buffer[4096];
int main(void) { int i; clrscr(); for(i=0; i

Функция Получает информацию

gettextinfo
Функция Получает информацию о текстовом режиме.
Синтаксис #include
void gettextinfo(struct text_info *r);
Файл, содержащий conio.h прототип
Описание gettextinfo заполняет структуру типа text_info, на которую указывает параметр r, информацией о текущем текстовом режиме.
text_info определена в conio.h следующим образом:
struct text_info { unsigneg char winleft; /*левая коорд. окна */ unsigneg char wintop; /*коорд. вершины окна */ unsigneg char winright; /* правая коорд. окна */ unsigneg char winbottom; /* нижная коорд. окна */ unsigneg char attribute; /* атрибуты текста */ unsigneg char normattr; /* нормальные атрибуты */ unsigneg char currmode; /* BW40, BW80, C40 или С80 */ unsigneg char screenheight; /* bottom - top */ unsigneg char screenwightу /* right - left */ unsigneg char curx; /* х - коорд. курсора */ unsigneg char cury; /* y - коорд. курсора */ };
Возвращаемое gettextinfo возвращает результат в параметре r. значение
Переносимость gettextinfo работает только на компьютерах, совместимых с IBM PC.
Смотрите также
Пример:
#include
int main(void) { struct text_info ti; gettextinfo(&ti); cprintf("Левая граница: %2d\r\n",ti.winleft); cprintf("Верхняя граница: %2d\r\n",ti.wintop); cprintf("Правая граница: %2d\r\n",ti.winrigth); cprintf("Нижняя граница: %2d\r\n",ti.winbottom); cprintf("Атрибуты: %2d\r\n",ti.attribute); cprintf("Нормальные атрибуты: %2d\r\n",ti.normattr); cprintf("Текущий режим: %2d\r\n",ti.curmode); cprintf("Высота экрана: %2d\r\n",ti.screenheight); cprintf("Ширина экрана: %2d\r\n",ti.screenwidth); cprintf("Координата х: %2d\r\n",ti.curx); cprintf("Координата y: %2d\r\n",ti.cury); return 0; }

Функция Получает информацию

gettextsettings
Функция Получает информацию о текущем графическом шрифте.
Синтаксис #include
void var gettexsettings(struct textsettingstype far *texttypeinfo);
Файл, содержащий graphics.h прототип
Описание gettextsettings заполняет структуру textsettingstype, на которую указывает textinfo, информацией о текущем текстовом шрифте, направле- нии, размере и выравнивании.
Структура textsettingstype, используемая gettextsettings, определена в graphics.h следую- щим образом:
struct textsettingstype{ int font; int direction; int charsize; int horiz; int vert; };
Смотрите settextstyle, в которой содержится опи- сание этих полей.
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
/* имена поддерживаемых шрифтов */ char *font[] = {"DEFAULT_FONT", "TRIPLEX_FONT", "SMALL_FONT", "SANS_SERIF_FONT", "GOTHIC_FONT" }; /* имена направлений текста */ char *dir[] = {"HORIS_DIR","VERT_DIR"};
/* горизонтальное выравнивание текста */ char *hjust[] = {"LEFT_TEXT","CENTER_TEXT","RIGTH_TEXT"};
/* вертикальное выравнивание текста */ char *vjust[] = {"BOTTOM_TEXT","CENTER_TEXT","TOP_TEXT"};
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; struct textsettingstype textinfo; int midx,midy,ht; char fontstr[80],dirstr[80],sizestr[80]; char hjuststr[80],vjuststr[80];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx()/2; midy = getmaxy()/2; /* получить информацию о текущем шрифте */ gettextsettings(&textinfo); /* преобразовать информацию в строки */ sprintf(fontstr,"Шрифт: %s",font[textinfo.font]); sprintf(dirstr,"Напрвление: %s",dir[textinfo.direction]); sprintf(sizestr,"Размер: %d",textinfo.charsize); sprintf(hjuststr,"Горизонтальное выравнивание: %s", hjust[textinfo.horiz]); sprintf(hjuststr,"Вертикальное выравнивание: %s", hjust[textinfo.vert]); /* вывести информацию */ ht = textheight("W"); settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(midx,midy,fontstr); outtextxy(midx,midy+2*ht,direstr); outtextxy(midx,midy+4*ht,sizestr); outtextxy(midx,midy+6*ht,hjuststr); outtextxy(midx,midy+8*ht,vjuststr); /* очистка */ getch(); closegraph(); return 0; }

Функция Получает системное

gettime
Функция Получает системное время.
Синтаксис #include
void gettime(struct time * timep);
Файл, содержащий dos.h прототип
Описание Функция gettime заполняет структуру time на кото- рую указывает параметр timep, текущим системным временем.
Структура time определена следующим образом:
struct time { unsigned char ti_min; /* минуты */ unsugned char ti_hour; /* часы */ unsigned char ti_hund; /* сотые доли секунды */ unsigned char ti_sec; /* секунды */ };
Возвращаемое Нет. значение
Переносимость gettime уникальна для DOS.
Смотрите также
Пример:
#include
#include
int main(void) { struct time t; gettime(&t); printf("Время: %2d:%02d:02d.%02d\n",t.ti_hour,t.ti_min, t.ti_sec, t.ti_hung); return 0; }

Функция Получает содержимое вектора

getvect
Функция Получает содержимое вектора прерывания.
Синтаксис #include
void interrupt(*getvect(int intr_num))();
Файл, содержащий dos.h прототип
Описание Любой из семейства процессоров 8086 содержит набор векторов прерываний, пронумерованных от 0 до 255. 4-х байтовое значение каждого вектора есть адрес, по которому расположена функция обработки преры- вания.
Функция getvect считывает значение вектора с име- нем intr_num и интерпретирует прочитанное значе- ние, как "дальний" указатель (с атрибутом "far") на некоторую функцию прерывания. Параметр intr_num должен иметь значение от 0 до 255.
Возвращаемое Функция getvect возвращает 4-х байтовое значение, значение хранящееся в векторе прерывания с номером intr_num.
Переносимость Функция уникальна для DOS.
Смотрите также
Пример
#include
#include
void interrupt get_out(); /* прототип ф-ции обработки прерывания */ void interrupt (*oldfunc)(); /* указатель на прерывание */ int looping = 1;
int main(void) { puts("Нажмите для завершения"); /* сохранить старый вектор */ oldfunc = getvect(5); /* установить новый вектор */ setvect(5,get_out) /* ничего не делать */ while(looping); /* восстановить старый вектор */ setvect(5,oldfunc); puts("Успешно"); return 0; } void interrupt get_out() { looping = 0; /* изменить значение глобальной переменной */ }

Функция Получает состояние флажка

getverify
Функция Получает состояние флажка верификации.
Синтаксис #include
int getverify(void);
Файл, содержащий dos.h прототип
Описание Функция getverify получает текущее состояние флаж- ка верификации.
Флажок верификации контролирует вывод на диск. Когда верификация выключена, запись на диск не контролируется, если же верификация включена, все операции записи на диск контролируются (для га- рантии правильности записи данных).
Возвращаемое Функция getverify возвращает текущее состояние значение флажка верификации, либо 0, либо 1.
Значение 0 = верификация выключена (off); значение 1 = верификация включена (on).
Переносимость Функция уникальна для DOS.
Смотрите также
Пример:
#include
#include
int main(void) { if(getverify()) printf("Флаг верификации включен\n"); else printf("Флаг верификации выключен\n"); return 0; }

Функция Получает информацию

getviewsettings
Функция Получает информацию о текущей области просмотра.
Синтаксис #include
void var getviewsettings(struct viewporttype far *viewport);
Файл, содержащий graphics.h прототип
Описание getviewsettings заполняет структуру viewporttype, на которую указывает viewport информацией о теку- щей области просмотра. Структура viewporttype ис- пользуемая getviewport определена в graphics.h следующим образом:
struct viewporttype { int left, top, right, bottom; int clip; };
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
char *clip[] = {"OFF","ON"};
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; struct viewporttype viewinfo; int midx,midy,ht; char topstr[80],botstr[80],clipstr[80];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx()/2; midy = getmaxy()/2; /* получить информацию о текущей области просмотра */ getviewsettings(&viewinfo); /* преобразовать информацию в строки */ sprintf(topstr,"Левый верхний угол(%d,%d)",viewinfo.left, viewinfo.top); sprintf(botstr,"Правый нижний угол(%d,%d)",viewinfo.rigth, viewinfo.bottom); sprintf(clipstr,"Клиппирование: %s",clip[viewinfo.clip]); /* вывести информацию */ ht = textheight("W"); settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(midx,midy,topstr); outtextxy(midx,midy+2*ht,botstr); outtextxy(midx,midy+4*ht,clipstr); /* очистка */ getch(); closegraph(); return 0; }

Функция Вводит из потока целое

getw
Функция Вводит из потока целое число.
Синтаксис #include
int getw(FILE *stream);
Файл, содержащий stdio.h прототип
Описание getw возвращает следующее целое из указанного потока. Она не подразумевает какого либо выравни- вания в файле. getw нельзя использовать, когда поток открыт в текстовом режиме.
Возвращаемое getw возвращает следующее целое из входного потока значение При ошибке или в конце файла она возвращает EOF. T.к. EOF является допустимым значением, то для определения ошибки или конца файла необходимо ис- пользовать функции feof и ferror.
Переносимость getw поддерживается системами UNIX.
Смотрите также
Пример:
#include
#include
#define FNAME "test.$$$"
int main(void) { FILE *fp; int word; /* записать в файл слово */ fp = open(FNAME,"wb"); if(fp==NULL) { printf("Ошибка при открытии файла\n"); exit(1); } word = 94; putw(word,fp); if(ferror(fp)) printf("Ошибка, при записи в файл\n"); else printf("Успешная запись в файл\n"); fclose(fp); /* повторное открытие файла */ fp = fopen(FNAME,"rb"); if(fp==NULL) { printf("Ошибка при открытии файла%s\n",FNAME); exit(1); } word = getw(fp); if(ferror(fp)) printf("Ошибка, при чтении из файла\n"); else printf("Успешное чтение в файле, word = %d\n",word); fclose(fp); unlink(FNAME); return 0; }

x текущей графичес- кой позиции.

getx
Функция Возвращает координату x текущей графической позиции.
Синтаксис #include
int far getx(void);
Файл, содержащий graphics.h прототип
Описание getx находит координату x текущей графичес- кой позиции. Значение берется относительно теку- щей области просмотра.
Возвращаемое getx возвращает координату x текущей позиции значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; char message[80];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ }
/* переместить точку в центр экрана */ moveto(getmaxx()/2,getmaxy()/2); /* создать строку */ sprintf(message,"

y текущей графичес- кой позиции.

gety
Функция Возвращает координату y текущей графической позиции.
Синтаксис #include
int far gety(void);
Файл, содержащий graphics.h прототип
Описание gety находит координату y текущей графичес- кой позиции. Значение берется относительно теку- щей области просмотра.
Возвращаемое gety возвращает координату y текущей позиции значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; char message[80];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ }
/* переместить точку в центр экрана */ moveto(getmaxx()/2,getmaxy()/2); /* создать строку */ sprintf(message,"

и время во время по

gmtime
Функция Преобразует дату и время во время по стандарту Гринвича.
Синтаксис #include
struct tm *gmtime(long *timer);
Файл, содержащий time.h прототип
Описание gmtime получает адрес значения, возвращаемого функцией time, и возвращает указатель на структу- ру типа tm, содержащую разделенное время. gmtime преобразует время непосредственно по Гринвичу.
Глобальная переменная типа long timezone должна содержать разницу в секундах между временем по Гринвичу и местным временем. Глобальная перемен- ная daylight должна быть равна 0, если не исполь- зуется стандартное летнее время.
Структура tm объявленна в time.h следующим обра- зом:
struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; };
Эти элементы содержат время в 24-часовой записи, день месяца 1-31, месяц 1-12, день недели (воск- ресенье = 0), год - 1900, день года 0-365 и флаг, определяющий действует ли летнее время.
Возвращаемое gmtime возвращает указатель на структуру, содержа- значение щую разделенное время. Эта структура имеет класс памяти static и перезаписывается при каждом вызо- ве.
Переносимость gmtime доступна в системах UNIX и поддерживается стандартом ANSI C.
Смотрите также
Пример:
#include
#include
#include
char *tzstr = "TZ=PST8PDT";
int main(void) { time_t t; struct tm *gmt,*area; putenv(tzstr); t = time(NULL); area = localtime(&t); printf("Локальное время:%s\n",asctime(area)); gmt = gmtime(&t); printf("GMT:%s\n",asctime(gmt)); return 0; }

в ука- занную позицию. Если

gotoxy
Функция Позиционирует курсор в текстовом окне.
Синтаксис #include
void gotoxy(int x, int y);
Файл, содержащий conio.h прототип
Описание gotoxy перемещает курсор в текстовом окне в ука- занную позицию. Если координаты указаны неверно, вызов данной функции игнорируется. Например, это произойдет при вызове gotoxy(40,30) когда окно имеет размеры 35 на 25.
Возвращаемое Нет. значение
Переносимость gotoxy работает только на системах, совместимых с IBM PC. Аналогичная функция есть в Turbo Pascal.
Смотрите также
Пример:
#include
int main(void) { clrscr(); gotoxy(35,12); cprintf("Привет!"); getch(); return 0; }

Функция Переустанавливает все графические параметры

graphdefaults
Функция Переустанавливает все графические параметры в их начальные значения.
Синтаксис #include
void far graphdefaults(void);
Файл, содержащий graphics.h прототип
Описание graphdefaults переустанавливает все графические параметры в их начальные значения:
- устанавливает область просмотра в полный экран;
- перемещает текущую позицию в (0,0);
- устанавливает начальные цвета палитры, цвет фо- на и цвет рисования;
- устанавливает начальный тип и шаблон заполне- ния;
- устанавливает начальный шрифт и выравнивание.
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int maxx, maxy;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } maxx = getmaxx(); maxy = getmaxy(); /* вывести линию со своими параметрами */ setlinestyle(DOTTED_LINE,0,3); line(o,o,maxx,maxy); outtextxy(maxx/2,maxy/2,"Перед восстановлением исходных значений"); getch(); /* восстановить исходные значение всех параметров */ graphdefaults(); cleardevice(); /* вывести строку с исходными параметрами */ line(o,o,maxx,maxy); outtextxy(maxx/2,maxy/2,"После восстановления исходных значений"); /* очистка */ getch(); closegraph(); return 0; }

Функция Возвращает указатель на строку

grapherrormsg
Функция Возвращает указатель на строку сообщения об ошиб- ке.
Синтаксис #include
char *far grapherrormsg(int errorcode);
Файл, содержащий graphics.h прототип
Описание grapherrormsg возвращает указатель на строку сообщения об ошибке, связанной с errorcode - зна- чением, возвращаемым graphresult.
Обратитесь к описанию errno (Глава 2) для озна- комления со списком ошибок и их мнемоникой.
Возвращаемое grapherrormsg возвращает указатель на строку значение сообщения об ошибке.
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
#define NONSENSE -50
int main(void) { /* Инициация ошибки */ int graphdriver = NONSENSE, gmode, errorcode;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult();
/* выдать соответствующее ошибке сообщение */ if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } line(o,o,getmaxx(),getmaxy()); /* очистка */ getch(); closegraph(); return 0; }

Функция Возвращает код ошибки последней

graphresult
Функция Возвращает код ошибки последней неудачно выпол- ненной графической операции.
Синтаксис #include
int far graphresult(void);
Файл, содержащий graphics.h прототип
Описание graphresult возвращает код ошибки последней гра- фической операции, которая сообщила об ошибке, и устанавливает уровень ошибки в grOk.
В следующей таблице приведены коды ошибок, возв- ращаемые graphresult. Перечисляемый тип graph_errors определяет ошибки в данной таблице. graph_errors объявлен в graphics.h. ----------------------------------------------------------- код константа соответствующая строка ошибки graphics_errors сообщения об ошибке ----------------------------------------------------------- 0 grOk нет ошибок -1 grNoInitGraph BGI-графика не установлена (используйте initgraph) -2 grNotDetect не обнаружены графические аппа- ратные средства -3 grFileNotFound файл драйвера не найден -4 grInvalidDriver неисправный файл драйвера -5 grNoLoadMem нет места в памяти для загрузки драйвера -6 grNoScanMem выход за память при сканирующем заполнении -7 grNoFloodMem выход за память при лавинном за- полнении -8 grFontNotFound файл со шрифтом не найден -9 grNoFontMem нет места в памяти для загрузки шрифта -10 grInvalidMode неверный графический режим для выбранного драйвера -11 grError графическая ошибка -12 grIOError графическая ошибка ввода/вывода -13 grInvalidFont неверный шрифтовый файл -14 grInvalidFontNum неверный номер шрифта -15 grInvalidDeviceNum неверный номер устройства -18 grInvalidVersion неверный номер версии ------------------------------------------------------------
Заметим, что переменные, полученные от graph- result, переустанавливаются в 0 после завершения вызова graphresult. Поэтому необходимо сохранять значения, полученные от graph- result, во времен- ных переменных и затем их использовать.
Возвращаемое graphresult возвращает текущий номер графи- значение ческой ошибки - целое число от -15 до 0; grapherrormsg возвращает указатель на строку, связанную со значением, возвращаемым функцией graphresult.
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* требуется автоопределение */ int graphdriver = DETECT, gmode, errorcode;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } line(o,o,getmaxx(),getmaxy()); /* очистка */ getch(); closegraph(); return 0; }

Описание функций Си

Harderr

harderr
Функция Устанавливает подпрограмму обработки ошибок электронного оборудования.
Синтаксис #include
void harderr(*handler)());
Файл, содержащий dos.h прототип
Описание Функция harderr устанавливает подпрограмму обра- ботки сбоев электронного оборудования для текущей программы. Данная подпрограмма вызывается к рабо- те, как только возникнет прерывание 0x24. (см. документ "Справочное руководство программиста для DOS").
При появлении данного прерывыания происходит вы- зов функции handler. Функция должна быть вызвана со следующими аргументами:
handler(int errval, int ax, int bp, int si);
Переменная errval - код ошибки, устанавливаемый DOS в регистре DI. ax, bp и si - значения, кото- рые MS-DOS помещает соответственно в регистры AX,BP,SI.
- параметр ax обозначает, произошла ли ошибка диска или какого-либо другого устройства. Если ax не отрицательно, произошла дисковая ошибка, в противном случае, это ошибка другого устройства. Для дисковой ошибки значение ax, сложенное логи- чески (операцией AND) с 0x00FF, даст номер диско- вода, в котором произошел сбой (1=A; 2=B; и т.д.).
- bp и si вместе указывают на заголовок драйвера устройства, в котором произошел сбой. bp содержит адрес сегмента, а si смещение.
Названная выше функция не вызывается непосредст- венно. Функция harderr устанавливает подпрограмму обработки прерываний DOS, которая вызывает функ- цию. Для получения информации из заголовка драй- вера можно использовать функции peek и peekb.
Программа - обработчик прерываний может использо- вать системные вызовы DOS от 1 до 0xC, все ос- тальные вызовы портят DOS. В частности, не могут быть использованы ни любые стандартные подпрог- раммы ввода/вывода CИ, ни любые подпрограммы вво- да/вывода эмуляции UNIX.
Программа обработки прерывания должна возвращать 0, если необходимо игнорировать ошибку, 1, если нужно повторить операцию и 2 для завершения прог- раммы.
Возвращаемое Нет. значение
Переносимость Функция уникальна для DOS.

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

Пример:

#include

#include

#include

#define IGNORE 0 #define RETRY 1 #define ABORT 2

/* определим сообщения об ошибке для дисковода */ static char *err_msg[] = {"диск защищен от записи", "неизвестное устройство", "дисковод не готов", "неизвестная команда", "ошибка данных (CRC)", "ошибка поиска", "неизвестный тип носителя", "ненайден сектор", "в принтере нет бумаги", "сбой при записи", "ошибка при чтении", "неустранимая ошибка", "зарезервирован", "зарезервирован", "неверная смена диска" };

error_win(char *msg) { int retval; cputs(msg); /* запрос у пользователя дальнейших действий */ while(1) { retval = getch(); if(retval == 'a' retval == 'A') { retval = ABORT; break; } if(retval == 'r' retval == 'R') { retval = RETRY; break; } if(retval == 'i' retval == 'I') { retval = IGNORE; break; } } return(retval); } /* прагма warn -par исключае выдачу предупреждений о том, что в подпрограмме не используются параметры errval,bp и si */

#pragma warn -par

int handler(int errval, int ax, int bp, int si) { static char msg[80]; unsigned di; int drive; int errno; di = _DI; /* если это не ошибка диска, то проблемы возникли у другого устр-ва */ if(ax

Hardresu

hardresume
Функция Функция обработки ошибок электронного оборудова- ния.
Синтаксис #include
void hardresume(int rescode);
Файл, содержащий dos.h прототип
Описание Программа обработки ошибочных состояний, устанав- ливаемая функцией harderr может использовать фун- кцию hardresume для возврата управления DOS. Воз- вращаемое значение rescode должно содержать инди- катор, определяющий игнорирование ошибки (0), повторение операции (1) или завершение программы (2). Завершение программы выполняется посредством прерывания DOS 0x23.
Программа обработки прерывания должна возвращать 0, если необходимо игнорировать ошибку, 1, если нужно повторить операцию и 2 для завершения прог- раммы.
Возвращаемое Нет. значение
Переносимость Функция уникальна для DOS.
Смотрите также
Пример:
/* Эта программа отслеживает появление ошибок, и запрашивает у пользователя дальнейшие действия. Для того, чтобы была вызва- на подпрограмма обработки ошибок, запуская программу, выньте из дисковода А: диск. */
#include
#include
#include
#define IGNORE 0 #define RETRY 1 #define ABORT 2
/* определим сообщения об ошибке для дисковода */ static char *err_msg[] = {"диск защищен от записи", "неизвестное устройство", "дисковод не готов", "неизвестная команда", "ошибка данных (CRC)", "ошибка поиска", "неизвестный тип носителя", "ненайден сектор", "в принтере нет бумаги", "сбой при записи", "ошибка при чтении", "неустранимая ошибка", "зарезервирован", "зарезервирован", "неверная смена диска" };
error_win(char *msg) { int retval; cputs(msg); /* запрос у пользователя дальнейших действий */ while(1) { retval = getch(); if(retval == 'a' retval == 'A') { retval = ABORT; break; } if(retval == 'r' retval == 'R') { retval = RETRY; break; } if(retval == 'i' retval == 'I') { retval = IGNORE; break; } } return(retval); } /* прагма warn -par исключае выдачу предупреждений о том, что не в подпролграмме не используются параметры errval,bp и si */ #pragma warn -par
int handler(int errval, int ax, int bp, int si) { static char msg[80]; unsigned di; int drive; int errno; di = _DI; /* если это не ошибка диска, то возникли проблемы у другого устр-ва */ if(ax

Hardretn

hardretn
Функция Функция обработки ошибок электронного оборудова- ния.
Синтаксис void hardretn(int errcode);
Файл, содержащий dos.h прототип
Описание Программа обработки ошибочных состояний, устанав- ливаемая подпрограммой harderr, может осуществить возврат управления прикладной программе с помощью функции hardretn.
Программа обработки прерывания должна возвращать 0, если необходимо игнорировать ошибку, 1, если нужно повторить операцию и 2 для завершения прог- раммы.
Возвращаемое Нет. значение
Переносимость Функция уникальна для DOS.
Смотрите также
Пример:
/* Эта программа отслеживает появление ошибок, и запрашивает у пользователя дальнейшие действия. Для того, чтобы была вызва- на подпрограмма обработки ошибок, запуская программу, выньте из дисковода А: диск. */
#include
#include
#include
#define IGNORE 0 #define RETRY 1 #define ABORT 2
/* определим сообщения об ошибке для дисковода */ static char *err_msg[] = {"диск защищен от записи", "неизвестное устройство", "дисковод не готов", "неизвестная команда", "ошибка данных (CRC)", "ошибка поиска", "неизвестный тип носителя", "ненайден сектор", "в принтере нет бумаги", "сбой при записи", "ошибка при чтении", "неустранимая ошибка", "зарезервирован", "зарезервирован", "неверная смена диска" };
error_win(char *msg) { int retval; cputs(msg); /* запрос у пользователя дальнейших действий */ while(1) { retval = getch(); if(retval == 'a' retval == 'A') { retval = ABORT; break; } if(retval == 'r' retval == 'R') { retval = RETRY; break; } if(retval == 'i' retval == 'I') { retval = IGNORE; break; } } return(retval); } /* прагма warn -par исключае выдачу предупреждений о том, что не в подпролграмме не используются параметры errval,bp и si */ #pragma warn -par
int handler(int errval, int ax, int bp, int si) { static char msg[80]; unsigned di; int drive; int errno; di = _DI; /* если это не ошибка диска, то возникли проблемы у другого устр-ва */ if(ax

Heapchec

heapchecknode
Функция Ищет и проверяет отдельный узел памяти.
Синтаксис #include
int heapchecknode(void *node);
Файл, содержащий alloc.h прототип
Описание Если узел был освобожден и heapchecknode вызы- вается с указателем на освобожденный узел, то heapchecknode может вернуть значение _BADNODE, вместо предполагаемого _FREEENTRY. Это происходит потому, что соседние свободные блоки сливаются, и блок, указанный при вызове функции, больше не су- ществует.
Возвращемое При ошибке возращется значение < 0, при успешном значение завершение возвращается значение > 0.
Если нет памяти, то возвращается значение _HEAPEMPTY (1). Если память запорчена, то возвращается _HEAPCORRUPT(-1). Если узел не найден, то возвращается _BADNODE (-2). Если узел освобожден, то возвращается _FREEENTRY (3). Если узел, это используемый блок, то возвращается _USEDENTRY (4)
Переносимость heapcheckfree уникальна для DOS.
Смотрите также
Пример:
#include
#include
#define NUM_PTRS 10 #define NUM_BYTES 16
int main(void) { char *array[NUM_PTRS]; int i; for(i=0; i

Heapfill

heapfillfree
Функция Заполняет свободные блоки памяти констнтным значением.
Синтаксис #include
int heapfillfree(unsigned int fillvalue);
Файл, содержащий alloc.h прототип
Описание ????????????????
Возвращемое При ошибке возращется значение < 0, при успешном значение завершение возвращается значение > 0.
Если нет памяти, то возвращается значение _HEAPEMPTY (1). Если память проверена,то возвращается_HEAPOK (2). Если память запорчена, то возвращается _HEAPCORRUPT(-1). Если зачение заполнения отличается от fillvalue, то возвращается _BADVALUE (-3).
Переносимость heapfillfree уникальна для DOS.
Смотриет также farheapfillfree.
Пример:
#include
#include
#include
#define NUM_PTRS 10 #define NUM_BYTES 16
int main(void) { char *array[NUM_PTRS]; int i; int res; for(i=0; i

Heapwalk

heapwalk
Функция Используется для перемещенмия по памяти от узла к узлу.
Синтаксис #include
int heapwalk(struct heapinfo *hi);
Файл, содержащий alloc.h прототип
Описание heapwalk подразумевает, что память не запорчена. Для проверки, перед использованием heapwalk, вы- зовите heapcheck. При достижении последнего бло- ка, функция возвращает _HEAPOK. При следующем вы- зове heapwalk, она вернет _HEAPEND.
heapwalk получает указатель на структуру типа heapinfo (определена в файле alloc.h). При первом вызове heapwalk установите поле hi.ptr в 0. farheapwalk вернет вам в этом поле адрес первого блока памяти. Поле hi.size содержит размер этого блока в байтах. hi.in_use - это флаг, который ус- танавливается, если этот блок используется в нас- тоящий момент.
Возвращемое Если нет памяти, то возвращается значение значение _HEAPEMPTY (1). Если hiapinfo содержит допустимые данные, то возвращается _HEAPOK (2). Если достигнут конец памяти, то возвращается _HEAPEND (5).
Переносимость heapwalk уникальна для DOS.
Смотрите также
Пример:
#include
#include
#define NUM_PTRS 10 #define NUM_BYTES 16
int main(void) { struct heapinfo hi; char *array[NUM_PTRS]; int i; for(i=0; i

Highvide

highvideo
Функция Устанавливает бит интенсивности.
Синтаксис #include
void highvideo(void);
Файл, содержащий conio.h прототип
Описание highvideo устанавливает, что далее будут выводится символы с высокой интенсивностью. Она делает это, устанавливая бит интенсивности в текущем цвете. Эта функция не влияет на текущее содержимое экра- на, а лишь работу функций, осуществляющих прямой вывод на экран в текстовом режиме (типа cprintf).
Возвращаемое Нет. значение
Переносимость highvideo работает только на машинах, совместимых с IBM PC. Аналогичная функция есть в Turbo Pascal.
Смотрите также
Пример:
#include
int main(void) { lowvideo(); cprintf("Текст низкой интенсивности"); highvideo(); gotoxy(1,2); cprintf("Текст высокой интенсивности"); return 0; }

Hypot

hypot
Функция Вычисляет гипотенузу прямоугольного треугольника.
Синтаксис #include
double hypot(double x, double y);
Файл, содержащий math.h прототип
Описание Функция hypot вычисляет значение z, где
z^2 = x^2 + y^2
и z >= 0
(это - эквивалент длины гипотенузы прямоугольного треугольника, если длины двух его сторон x и y).
Возвращаемое При успешном завершении, функция hypot возвращает значение число z- двойной точности. При ошибке (такой, например, как переполнение), функция hypot прис- ваивает глобальной переменной errno значение:
ERANGE - Результат превышает допустимое значение.
и сама возвращает значение HUGE_VAL.
Обработка ошибок для функции hypot может быть мо- дифицирована посредством функции matherr.
Переносимость Функция поддерживается на системах UNIX.
Пример:
#include
#include
int main(void) { double result; double x = 3.0; double y = 4.0; result = hypot(x,y); printf("Гипотенуза = %lf\n",result); return 0; }

Описание функций Си

Imag

imag
Функция Возвращает мнимую часть комплексного числа.
Синтаксис #include
double imag(complex x);
Файл, содержащий complex.h прототип
Описание Комплексное число состоит из двух чисел с плаваю- щей точкой. imag возвращает одно из них, мнимую часть.
Возвращаемое Мнимая часть комплексного числа. значение
Переносимость Комплексные функции требуют С++ и поэтому непере- носимы.
Смотри также
Пример:
#include
#include
int main(void) { double x=3.1,y=4.2; complex z = complex(x,y); cout

Imagesiz

imagesize
Функция Возвращает количество байтов, требуемых для хранения битового образа.
Синтаксис #include
unsigned far imagesize(int left, int top, int right, int bottom);
Файл, содержащий graphics.h прототип
Описание imagesize определяет размер области памяти, тре- буемой для хранения битового образа. Если размер, требуемый для выбранного образа больше или равен 64К-1 байт, imagesize возвращает 0хFFFF(-1).
Возвращаемое imagesize возвращает размер требуемой области значение памяти в байтах.
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддерживающими графический режим.
Смотри также Пример:
#include
#include
#include
#include
#define ARROW_SIZE 10
void draw_arrow(int x,int y);
int main(void) { int graphdriver = DETECT, gmode, errorcode; void *arrow; int x,y,maxx; unsigned int size;
/* инициализация драйвера и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } maxx = getmaxx(); x = 0; y = getmaxy()/2; /* нарисовать перемещаемый объект */ draw_arrow(x,y); /* определить размер памяти, для хранения изображения */ size = imagesize(x,y-ARROW_SIZE,x+(4*ARROW_SIZE),y+ARROW_SIZE); /* выделить память */ arrow = malloc(size); /* взять изображение */ getimage(x,y-ARROW_SIZE,x+(4*ARROW_SIZE),y+ARROW_SIZE,arrow); /* продолжать, пока не будет нажата клавиша */ while(!kbhit()) { /* стереть старый образ */ putimage(x,y-ARROW_SIZE,arrow,XOR_PUT); x += ARROW_SIZE; if(x >= maxx) x = 0; /* нарисовать изображение */ putimage(x,y-ARROW_SIZE,arrow,XOR_PUT); }
free(arrow); closegraph(); return 0; }
void draw_arrow(int x,int y) { /* нарисовать на экране стрелку */ moveto(x,y); linerel(4*ARROW_SIZE,0); linerel(-2*ARROW_SIZE,-1*ARROW_SIZE); linerel(0,2*ARROW_SIZE); linerel(2*ARROW_SIZE,-1*ARROW_SIZE); }

Initgrap

initgraph
Функция Инициализирует графическую систему.
Синтаксис #include
void far initgraph(int far *graphdriver, int far *graphmode, char far *pathtodriver)
Файл, содержащий graphics.h прототип
Описание initgraph инициализирует графическую систему путем загрузки графического драйвера с диска (или подтверждения работоспособности заре- гестрированного драйвера) и переводит сис- тему в графический режим. Для того чтобы запустить графическую систе- му, прежде всего вызовите функцию initgraph. initgraph загружает графический драйвер и переводит систему в графический режим. Вы можете указать графической системе ис- пользовать конкретный графический драйвер и режим, или, чтобы она сама определила в процессе работы привязанный к данной системе видеоадаптер и выбратла соответствующий драйвер. Если вы указа- ли initgraph автоопределение она вызывает detectgraph для выбора графического драйвера и режима. initgraph также переустанавливает все графические параметры в их значения по умолча- нию (текущая позиция, палитра, цвет, окно экрана, и т. д.) и переустанавливает grapgresult в 0. Обычно initgraph загружает графический драйвер путем выделения памяти для драйвера (с помощью функции _graphgetmem), затем загружает соответст- вующий файл .BGI с диска. В противоположность этой схеме динамической загрузки , вы можете присоеди- нить файл графического драйвера (или несколько та- ких файлов) непосредственно выполняемым файлом. Смотрите более подробную информацию в BGIOBJ. pathodriver определяeт маршрут по которому initgraph будет искать графические драйверы. initgraph сначала ищет по маршруту, определяемому в pathtodriver, затем ( если их там нет) ищет в текущей директории. Следовательно, если pathtodriver равен NULL, файлы драйвера (*.BGI) должны быть в текущей директории. Таким же путем settexstyle будет искать файлы (.CHR), содержащие шрифты.
*graphdriver - целое, которое определяет исполь- зуемый графический драйвер. Вы можете задать его значение, используя константу graphics_driver пе- речисляемого типа, определенного в graphics.h и показанного в следующей таблице. ________________________________________ graphics_drivers константа численное значение __________________________________________

DETECT 0 ( запрашивает автоопределе- ние драйвера) CGA 1 MCGA 2 EGA 3 EGA64 4 EGAMONO 5 IBM8514 6 HERCMONO 7 ATT400 8 VGA 9 PC3270 10 __________________________________________ *graphmode - целое, которое определяет исходный графический режим (если *graphdriver не равен DETECT, *graphmode устанавливается в наивысшее разрешение, допустимое для данного драйвера). Вы можете задать значение *graphmode, используя конс- танту перечисляемого типа graphics_modes, опреде- ленную в graphics.h и показанную в следующей таб- лице: --------------------------------------------------------------- Графическ. graphics Знач. Колонок Палитра Страниц драйвер _modes * столбцов --------------------------------------------------------------- CGA CGAC0 0 320 x 200 C0 1 CGAC1 1 320 x 200 C1 1 CGAC2 2 320 x 200 C2 1 CGAC3 3 320 x 200 C3 1 CGAHI 4 640 x 200 2цвета 1

MCGA MCGAC0 0 320 x 200 C0 1 MCGAC1 1 320 x 200 C1 1 MCGAC2 2 320 x 200 C2 1 MCGAC3 3 320 x 200 C3 1 MCGAMED 4 640 x 200 2цвета 1 MCGAHI 5 640 x 480 2цвета 1

EGA EGALO 0 640 x 200 16цветов 4 EGAHI 1 640 x 350 16цветов 2

EGA64 EGA64LO 0 640 x 200 16цветов 1

EGA64HI 1 640 x 350 4 цвета 1

EGA- EGAMONOHI 3 640 x 350 2 цвета 1* MONO EGAMONOHI 3 640 x 350 2 цвета 2**

HERC HERCMONOHI 0 720 x 348 2 цвета 2

AT400 ATT400C0 0 320 x 200 C0 1 ATT400C1 1 320 x 200 C1 1 ATT400C2 2 320 x 200 C2 1 ATT400C3 3 320 x 200 C3 1 ATT400MED 4 640 x 200 2 цвета 1 ATT400HI 5 640 x 400 2 цвета 1

VGA VGALO 0 640 x 200 16цветов 2 VGAMED 1 640 x 350 16цветов 2 VGAHI 2 640 x 380 16цветов 1

PC3270 PC3270HI 0 720 x 350 2 цвета 1

IBM8514 IBM8514HI 0 640 x 480 256цветов IBM8514LO 0 1024 x 768 256цветов

* 64К на карте EGAMONO ** 256К на карте EGAMONO --------------------------------------------------------------

Замечание:Основная причина вызова непосредственно detectgraph состоит в переопределении графического режима, который detectgraph рекомендовал initgraph.

В приведенной таблице, элементы столбца "Палитра" C0, C1, C2 и C3 относятся к четырем ранее опреде- ленным четырехцветным палитрам, действительным для CGA и совместимых систем. Вы можете выбрать цвет фона( элемент #0 ), но остальные цвета не меняют- ся. Эти палитры подробно описаны в главе 5 "Ви- део-функции" в "Руководстве пользователя по Turbo C " и суммированы в следующей таблице: ----------------------------------------------------------- Номер Константа присвоенная значению пиксела палитры 1 2 3 ----------------------------------------------------------- 0 CGA_LIGHTGREEN CGA_LIGHTRED CGA_YELLOW 1 CGA_LIGHTCYAN CGA_LIGHTMAGENTA CGA_WHITE 2 CGA_GREEN CGA_RED CGA_BROWN 3 CGA_CYAN CGA_MAGENTA CGA_LIGHTGRAY ------------------------------------------------------------ После обращения к initgraph *graphdriver устанав- ливается в текущий графический драйвер, а *graphmode в текущий графический режим.


Возвращаемое initgraph всегда устанавливает внутренний значение код ошибки. В случае успешного выполнения код равен 0. В случае же ошибки *graphdriver устанавливается в -2, -3, -4 или -5, и graphresult возвращает соответс- твующие значения, перечисленные ниже:

-2 не может определить тип графической карты (grNotDetected) -3 не может найти файл драйвера (grFileNotFound) -4 неправильный драйвер (grInvalidDriver) -5 недостаточно памяти для загрузки драйвера (grNoLoadMem)

Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддерживающими графический режим.

Смотри также

Пример:

#include

#include

#include

#include

int main(void) { /* требуется автоопределение */ int graphdriver = DETECT, gmode, errorcode;

/* мнмцмализация графического режима */ initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } line(0,0,getmaxx(),getmaxy());

getch(); closegraph(); return 0; }

Inport

inport
Функция Считывает слово из порта.
Синтаксис #include
int inport(int portid);
Файл, содержащий dos.h прототип
Описание inport работае аналогично команде процессорора 80x86 IN. Она считывает младший бай слова из вход- ного порта, заданного параметром portid, а старший байт из порта portid+2.
Возвращаемое Функции inport возвращают прочитанное значение. значение
Переносимость Функция уникальна для микропроцессоров семейства 8086.
Смотри также
Пример:
#include
#include
int main(void) { int result; int port = 0; /* последовательный порт 0 */ result = inport(port); printf("Слово, считанное из порта %d = 0x%X\n",port,result); return 0; }

Inportb

inportb
Функция Считывает байт из порта.
Синтаксис #include
int inport(int port);
Файл, содержащий dos.h прототип
Описание inportb - это макрокоманда, которая считывает байт из порта, определяемого параметром port. Если вы подключили файл dos.h, то inportb рассматривается как макрокоманда, которая расширяется до встроен- ного кода. Если вы не включите dos.h, или отмените определение макрокоманды с помощью инструкции #undef, то получите функцию.
Возвращаемое inportb возвращает прочитанное значение. значение
Переносимость Функция уникальна для микропроцессоров семейства 8086.
Смотри также
Пример:
#include
#include
int main(void) { unsigned char result; int port = 0; /* последовательный порт 0 */ result = inportb(port); printf("Байт, считанный из порта %d = 0x%X\n",port,result); return 0; }

Insline

insline
Функция Вставляет пустую строку в текстовом окне.
Синтаксис #include
void insline(void);
Файл, содержащий conio.h прототип
Описание insline вставляет в текущем текстовом окне пустую строку, пользуясь текущей позицией курсора и цве- том фона. Все строки лежащие ниже данной прокру- чиваются вниз. Самая нижняя строка исчезает.
insline используется в текстовом режиме.
Возвращаемое Нет. значение
Переносимость insline работает только на компьютерах совместимых с IBM PC, соответствующая функция есть в Turbo Pas- cal.
Смотри также Пример:
#include
int main(void) { clrscr(); cprintf("Функция INSLINE вставляет строку, по текущему по-\r\n"); cprintf("ложению курсора, использую текущий цвет фона.\r\n"); cprintf("Все строки ниже ее, сдвигаются вниз. \r\n"); cprintf("INSLINE работает в текущем активном \r\n"); cprintf("текстовом окне. Для продолжения нажмите клавишу..."); gotoxy(1,3); getch(); insline(); getch(); return 0; }

Installu

installuserfont
Функция Загружает файл со шрифтом (.CHR), который не встроен в BGI-систему.
Синтаксис #include
int far installuserfont(char far *name);
Файл, содержащий graphics.h прототип
Описание name - полное имя шрифтового файла, содер- жащего штриховые шрифты. Одновременно может быть добавлено до двадцати шрифтов.
Возвращаемое installuserfont возвращает ID-номер шриф- значение та, который затем может передаваться в settextstyle для выбора соответствующего шрифта. Если внутренняя таблица шрифтов за- полнена, то возвращаемое значение равно -11 (grError).
Переносимость Функция уникальна для Turbo C++. Эта функция пригодна только для компьютеров IBM PC и совмести- мых с ними, оснащенных дисплейными адаптерами, поддерживающими графический режим.
Смотри также Пример:
#include
#include
#include
#include
/* прототипы функций */ void checkerrors(void);
int main(void) { int gdriver = DETECT,gmode; int userfont; int midx,midy;
/* инициализация графики и локальных переменных */ initgraph(&gdriver,&gmode,""); midx = getmaxx()/2; midy = getmaxy()/2; /* проверить на ошибки инициализации */ checkerrors(); /* инсталлировать шрифт, написанный пользователем */ userfont = installuserfont("USER.CHR"); /* проверить на ошибки инсталляции */ checkerrors(); /* выбрать пользовательский шрифт */ settextstyle(userfont,HORIS_DIR,4); /* вывести некоторый текст */ outtextxy(midx,midy,"Тест"); /* очистка */ getch(); closegraph(); return 0; } /* проверка и сообщение о появлении ошибок */ void checkerrors(void) { int errorcode; errorcode = graphresult(); if(errorcode != grOk) { printf("Ошибка графики %s\n",grapherrormsg(errorcode)); printf("Для завершения нажмите любую клавишу... "); getch(); exit(1); } }

int86

Функция Генерирует программное прерывание процессора 8086.

Синтаксис #include

int int86(int intr_num, union REGS *inregs, union REGS *outregs);

Файл, содержащий dos.h прототип

Описание Функция генерирует программное прерывание микро- процессора 8086, причем номер прерывания опреде- ляется аргументом intr_num. Перед выполнением пре- рывания, функция копируют значения регистров из объединения inregs в сами регистры.

После возврата из прерывания, функция копируют те- кущие значения регистров в параметр outregs, а ста- тус флажка системного переноса в поле x.cflag па- раметра outregs, а содержимое регистра флагов в поле x.flags. Если флажок переноса установлен, это обычно означает что произошла ошибка.

Примечание: параметры inregs и outregs могут ука- зывать на одну и туже структуру.

Возвращаемое Функция int86 возвращает значение регистра AX после значение завершения прерывания. Если флажок переноса уста- новлен (outregs-->x.cflag!=0), то есть произошла ошибка, данная функция присваивает глобальной пе- ременной _doserrno код ошибки.

Переносимость Функция уникальна семейства микропроцессоров 8086.

Пример:

#include

#include

#include

#define VIDEO 0x10

void movetoxy(int x, int y) { union REGS regs; regs.h.ah = 2; /* установить позицию курсора */ regs.h.dh = y; regs.h.dl = x; regs.h.bh = 0; /* страница 0 */ int86(VIDEO, ®s, ®s); }

int main(void) { clrscr(); movetoxy(35,10); printf("Привет\n"); return 0; }

Int86x

int86x
Функция Интерфейс с программными прерываниями процессора 8086.
Синтаксис #include
int int86(int intr_num, union REGS *inregs, union REGS *outregs, struct SREGS *segregs);
Файл, содержащий dos.h прототип
Описание Функция генерирует программное прерывание микро- процессора 8086, причем номер прерывания опреде- ляется аргументом intr_num. Перед выполнением пре- рывания, функция копирует значения регистров из объединения inregs в сами регистры.
Кроме этого, int86 копирует значения segregs->x.ds и segregs->x.es в соответствующие регистры, перед вызовом прерывания. Эта возможность позволяет программам использовать дальние указатели или большие модели памяти для указания используемых для прерывания сегментов.
После возврата из прерывания, функция копируют те- кущие значения регистров в параметр outregs, а ста- тус флажка системного переноса в поле x.cflag па- раметра outregs. Если флажок переноса установлен, это означает что произошла ошибка. Кроме этого, данная функция восстанавливает содержимое DS и за- полняет поля segregs->es и segregs->ds соответст- вующими значениями.
int86x позволяет вам генерировать прерывание кото- рое получает значение в DS отличное от адреса сег- мента данных по умолчанию, и/или которое получает аргумент в регистре ES.
Примечание: параметры inregs и outregs могут ука- зывать на одну и туже структуру.
Возвращаемое Функция int86 возвращает значение регистра AX после значение завершения прерывания. Если флажок переноса уста- новлен (outregs-->x.cflag!=0), то есть произошла ошибка, данная функция присваивает глобальной пе- ременной _doserrno код ошибки.
Переносимость Функция уникальна для семейства микропроцессоров 8086.
Смотри также 6,
Пример:
#include
#include
#include
int main(void) { char filename[80]; union REGS inregs,outregs; struct SREGS segregs; printf("Введите имя файла:"); gets(filename); inregs.h.ah = 0x43; inregs.h.al = 0x21; inregs.x.dx = FP_OFF(filename); segregs.ds = FP_SEG(filename); int86x(0x21,&inregs,&outregs,&segregs); printf("Атрибуты файла: %X\n",outregs.x.cx); return 0; }

Intdos

intdos
Функция Интерфейс с функциями DOS.
Синтаксис #include
int intdos(union REGS *inregs, union REGS *outregs);
Файл, содержащий dos.h прототип
Описание Функция генерирует прерывание DOS 0x21 для запуска заданной функции DOS. Значение параметра inregs->h.al определяет функцию DOS.
После возврата из прерывания, функция копируют те- кущие значения регистров в параметр outregs, а ста- тус флажка системного переноса в поле x.cflag па- раметра outregs. Если флажок переноса установлен, это означает что произошла ошибка.
Примечание: параметры inregs и outregs могут ука- зывать на одну и туже структуру.
Возвращаемое После завершения вызова подпрограммы DOS, функция значение intdos возвращает значение регистра AX. Если флажок переноса установлен (outregs-->x.cflag !=0), что означает ошибку, переменная _doserrno получает в качестве значения код ошибки.
Переносимость Функция уникальна для DOS.
Смотрите также 6, 6
Пример: #include
#include
/* удаление файла. При успешном завершении возвращает 0, иначе ненулевое значение */ int delete_file(char near *filename) { union REGS regs; int ret; regs.h.ah = 0x41; /* удаление файла */ regs.x.dx = (unsigned) filename; ret = intdos(®s, ®s); /* if carry flag is set, there was an error */ return(regs.x.cflag ? ret : 0); } int main(void) { int err; err = delete_file("NOTEXIST.$$$"); printf("Able to delete NOTEXIST.$$$: %s\n", (!err) ? "YES" : "NO"); } Вывод:
Able to delete NOTEXIST.$$$: NO

Intdosx

intdosx
Функция Интерфейс с функциями DOS.
Синтаксис #include
int int86(int intr_num, union REGS *inregs, union REGS *outregs, struct SREGS *segregs);
Файл, содержащий dos.h прототип
Описание Функция генерирует программное прерывание DOS 0x21 для вызова необходимой функции DOS. Значение inregs->h.al определяет требуемую функцию.
Кроме этого, intdosx копирует значения segregs->x.ds и segregs->x.es в соответствующие регистры, перед вызовом прерывания. Эта возможность позволяет программам использовать дальние указатели или большие модели памяти для указания используемых для прерывания сегментов.
После возврата из прерывания, функция копируют те- кущие значения регистров в параметр outregs, а ста- тус флажка системного переноса в поле x.cflag па- раметра outregs. Если флажок переноса установлен, это означает что произошла ошибка. Кроме этого, данная функция восстанавливает содержимое DS и за- полняет поля segregs->es и segregs->ds соответст- вующими значениями.
intdosx позволяет вам вызывать функцию DOS, кото- рая получает значение в DS, отличное от адреса сег- мента данных по умолчанию, и/или которое получает аргумент в регистре ES.
Примечание: параметры inregs и outregs могут ука- зывать на одну и туже структуру.
Возвращаемое Функция intodsx возвращает значение регистра AX после значение завершения прерывания. Если флажок переноса уста- новлен (outregs-->x.cflag!=0), то есть произошла ошибка, данная функция присваивает глобальной пе- ременной _doserrno код ошибки.
Переносимость Функция уникальна для DOS.
Смотри также 6 6,
Пример: #include
#include
/* удаление файла. При успешном завершении возвращает 0, иначе ненулевое значение */ int delete_file(char near *filename) { union REGS regs; int ret; regs.h.ah = 0x41; /* удаление файла */ regs.x.dx = (unsigned) filename; ret = intdos(®s, ®s); /* if carry flag is set, there was an error */ return(regs.x.cflag ? ret : 0); } int main(void) { int err; err = delete_file("NOTEXIST.$$$"); printf("Able to delete NOTEXIST.$$$: %s\n", (!err) ? "YES" : "NO");
} Вывод:
Able to delete NOTEXIST.$$$: NO

Intr

intr
Функция Альтернативный интерфейс к прерываниям микро- процессора 8086.
Синтаксис #include
void intr(int intr_num, struct REGPACK *preg);
Файл, содержащий dos.h прототип
Описание Функция intr поддерживает альтернативный интерфейс для выполнения программных прерываний. Она генери- рует прерывание микропроцессора 8086, заданное аргументом intr num.
Функция intr перед выполнением прерывания копирует значения регистров из структуры REGPACK *preg непосредственно в регистры. После завершения пре- рывания функция intr копирует текущее значение ре- гистров в параметр preg. Значения флажков остаются законсервированными.
Функции intr передаются следующие параметры:
intr num - номер выполняемого прерывания;
preg - адрес структуры, содержащий:
(a)- значения регистров перед вызовом; (b)- значения регистров после вызова прерыва- ния.
Структура REGPACK объявленна в dos.h следующим об- разом:
struct REGPACK { unsigned r_ax, r_bx, r_cx, r_dx; unsigned r_bp, r_si, r_di, r_ds, r_es, r_flags; };
Возвращаемое Никакое значение не возвращается. Структура значение REGPACK *streg содержит значения регистров после вызова прерывания.
Переносимость Функция уникальна семейства микропроцессоров 8086.
Смотрите также 6, 6
Пример:
#include
#include
#include
#include
#define CF 1 /* флаг переноса */
int main(void) { char directory[80]; struct REGPACK reg; printf("Введите директорию, куда перейти:"); gets(directory); reg.r_ax = 0x3b

Ioctl

ioctl
Функция Управление устройствами ввода/вывода.
Синтаксис int ioctl(int handle, int func[, int *argdx, int argcx]);
Файл, содержащий io.h прототип
Описание Данная функция представляет собой непосредственный интерфейс для вызова функции DOS 0x44 (IOCTL).
Выполняемая функция зависит от значения параметра func следующим образом:
0- получение информации об устройстве;
1- установка информации об устройстве (в параметр argdx);
2- считывает argcx байт и помещает их по адресу, указанному в argdx;
3- записывает argcx байт из адреса, на который указывает argdx;
4- также, как и в ситуации 2, исключая то, что па- раметр handle трактуется, как номер дисковода (0= по умолчанию, 1=A, и т.д.);
5- также, как и в ситуации 3, за исключением того, что параметр handle трактуется, как номер дис- ковода(0= по умолчанию, 1=A, и т.д.);
6- получает статус ввода;
7- получает статус вывода;
8- тест на сменность; только для версий DOS 3.0;
11- устанавливает число повторов при конфликте разделения файлов; только для версий DOS 3.0
Функция ioctl может быть использована для получе- ния информации о каналах устройств.
Могут использоваться также обычные файлы, но для них можно использовать только func равное 0,6 и 7. Все остальные вызовы будут возвращать для файлов ошибочное значение EINVAL.
Смотрите более детальную информацию об аргументах или возвращаемых значениях в "Справочном руководст- ве программиста DOS" - в описании системного вызова 0x44.
Аргументы argdx и argcx - необязательны.
Функция ioctl обеспечивает прямой интерфейс к спе- циальным функциям драйверов устройств DOS. В ре- зультате, точное поведение данной функции будет изменяться в зависимости от поставщиков-производи- телей мат. обеспечения и различных устройств. Кро- ме того, некоторые фирмы не следуют правилам ин- терфейса, описанным выше. Смотрите конкретное опи- сание системы BIOS вашего конкретного поставщика, чтобы найти точные правила использования функции ioctl.
Возвращаемое Для значений параметра func - 0 или 1 возвращаемое значение значение представляет собой информацию об устрой- стве (в часности значение регистра DX, получаемое при вызове IOCTL).

Для значений func от 2 до 5, возвращаемое значе- ние - это количество реально переданных байтов.

Для значениея func 6 или 7, возвращаемое значе- ние - это статус устройства.

В любой ситуации, если обнаружена ошибка, возвра- щается -1 и глобальная переменная errno получает одно из следующий значений:

EINVAL - неверный аргумент; EBADF - неверный номер файла; EINVDAT - неверные данные.

Переносимость Функция ioctl поддерживается на системах UNIX, но не с описанными выше параметрами. На системе UNIX версии 7 и системе SYSTEM III применение функции ioctl различно. Вызовы функции ioctl не переносимы на системах UNIX и очень редко переносятся с одной системы DOS на другую.

В версиях MS-DOS 3.0 параметр func разширен двумя значениями: 8 и 11.

Пример:

#include

#include

#include

int main(void) { int stat; /* функция 8 используется, чтобы определить, является ли диск, в текущем устройстве сменным */ stat = ioctl(0, 8, 0, 0); printf("Диск %c %s сменный\n", getdisk() + 'A', (stat == 0) ? "" : "не"); }

Isalnum

isalnum
Функция Макро классификации символов.
Синтаксис #include
int isalnum(int c);
Файл, содержащий ctype.h прототип
Описание isalnum - это макрокованда, которая классифицирует целые значения в коде ASCII, путем просмотра таблицы. При true она возвращает ненулевое значение и 0 при false. Она определена только в том случае, если isascii(c) равно true или c = EOF.
Возвращаемое isalnum возвращает ненулевое значение если c - значение это буква (A-Z или a-z), или цифра (0-9).
Переносимость isalnum доступна в системах UNIX.
Пример:
#include
#include
int main(void) { char c = 'C'; if(isalnum(c)) printf("%c - alphanumeric\n",c); else printf("%c - isn't alphanumeric\n",c); return 0; }

Isalpha

isalpha
Функция Макро классификации символов.
Синтаксис #include
int isalpha(int ch);
Файл, содержащий ctype.h прототип
Описание isalpha - это макрокованда, которая классифицирует целые значения в коде ASCII, путем просмотра таб- лицы. При true она возвращает ненулевое значение и 0 при false. Она определена только в том случае, если isascii(ch) равно true или ch = EOF.
Вы можете вместо макрокоманды, использовать функ- цию, если воспользуетесь директивой #undef.
Возвращаемое isalpha возвращает ненулевое значение если ch - значение это буква (A-Z или a-z).
Переносимость isalpha доступна в системах UNIX и поддерживается стандартом ANSI C.
Пример:
#include
#include
int main(void) { char c = 'C'; if(isalpha(c)) printf("%c - alphabetic\n",c); else printf("%c - isn't alphabetic\n",c); return 0; }

Isascii

isascii
Функция Макро классификации символов.
Синтаксис #include
int isascii(int ch);
Файл, содержащий ctype.h прототип
Описание isascii - это макрокованда, которая классифицирует целые значения в коде ASCII, просмотром таблицы. При true она возвращает ненулевое значение и 0 при false.
isascii определена для всех целых значений.
Возвращаемое isascii возвращает ненулевое значение если младший значение байт ch лежит в диапазоне от 0 до 127 (0x00-0x7F)
Переносимость isascii доступна в системах UNIX.
Пример:
#include
#include
int main(void) { char c = 'C'; if(isascii(c)) printf("%c - is ascii\n",c); else printf("%c - isn't ascii\n",c); return 0; }

Isatty

isatty
Функция Производит проверку на тип устройства.
Синтаксис #include
int isatty(int handle);
Файл, содержащий io.h прототип
Описание Функция isatty определяет, какой из перечисленных ниже типов устройств идентифицирует параметр handle:
- терминал; - консоль; - принтер; - последовательный порт.
Возвращаемое Если устройство является символьным, функция значение isatty возвращает ненулевое значение, если данное устройство не относится к такому типу, функция isatty возвращает 0.
Переносимость isatty уникальна для DOS.
Пример:
#include
#include
int main(void) { int handle; handle = fileno(stdout); if(isatty(c)) printf("Дескриптор %d - относится к устройству\n",handle); else printf("Дескриптор %d - не относится к устройству\n",handle); return 0; }

Iscntrl

iscntrl
Функция Макро классификации символов.
Синтаксис #include
int iscntrl(int ch);
Файл, содержащий ctype.h прототип
Описание iscntrl - это макрокованда, которая классифицирует целые значения в коде ASCII, просмотром таблицы. При true она возвращает ненулевое значение и 0 при false. Она определена только в том случае, если isascii(ch) равно true или ch = EOF.
Вы можете вместо макрокоманды, использовать функ- цию, если воспользуетесь директивой #undef.
Возвращаемое iscntrl возвращает ненулевое значение если ch - значение это символ удаления или обычный управляющий символ (0x7F или 0x00-0x1F)
Переносимость iscntrl доступна в системах UNIX и поддерживается стандартом ANSI C.
Пример:
#include
#include
int main(void) { char c = 'C'; if(iscntrl(c)) printf("%c - управляющий символ\n",c); else printf("%c - не является управляющим символом\n",c); return 0; }

Isdigit

isdigit
Функция Макро классификации символов.
Синтаксис #include
int isdigit(int ch);
Файл, содержащий ctype.h прототип
Описание isdigit - это макрокованда, которая классифицирует целые значения в коде ASCII, просмотром таблицы. При true она возвращает ненулевое значение и 0 при false. Она определена только в том случае, если isascii(ch) равно true или ch = EOF.
Вы можете вместо макрокоманды, использовать функ- цию, если воспользуетесь директивой #undef.
Возвращаемое isdigit возвращает ненулевое значение если ch - значение это цифра ('0'-'9')
Переносимость isdigit доступна в системах UNIX и поддерживается стандартом ANSI C.
Пример:
#include
#include
int main(void) { char c = 'C'; if(iscntrl(c)) printf("%c - цифра\n",c); else printf("%c - не является цифрой\n",c); return 0; }

Isgraph

isgraph
Функция Макро классификации символов.
Синтаксис #include
int isgraph(int ch);
Файл, содержащий ctype.h прототип
Описание isgraph - это макрокованда, которая классифицирует целые значения в коде ASCII, просмотром таблицы. При true она возвращает ненулевое значение и 0 при false. Она определена только в том случае, если isascii(ch) равно true или ch = EOF.
Вы можете вместо макрокоманды, использовать функ- цию, если воспользуетесь директивой #undef.
Возвращаемое isgraph возвращает ненулевое значение если ch - значение печатаемый символ (аналогично isprint), исключая символ пробела.
Переносимость isgraph доступна в системах UNIX и поддерживается стандартом ANSI C.
Пример:
#include
#include
int main(void) { char c = 'C'; if(isgraph(c)) printf("%c - графический символ\n",c); else printf("%c - не является графическим символом\n",c); return 0; }

Islower

islower
Функция Макро классификации символов.
Синтаксис #include
int islower(int ch);
Файл, содержащий ctype.h прототип
Описание islower - это макрокоманда, которая классифицирует целые значения в коде ASCII, просмотром таблицы. При true она возвращает ненулевое значение и 0 при false. Она определена только в том случае, если isascii(ch) равно true или ch = EOF.
Вы можете вместо макрокоманды, использовать функ- цию, если воспользуетесь директивой #undef.
Возвращаемое islower возвращает ненулевое значение если ch - значение это буква в нижнем регистре ('a'-'z')
Переносимость isdigit доступна в системах UNIX и поддерживается стандартом ANSI C.
Пример:
#include
#include
int main(void) { char c = 'C'; if(islower(c)) printf("%c - буква в нижнем регистре\n",c); else printf("%c - не является буквой в нижнем регистре\n",c); return 0; }

Isprint

isprint
Функция Макро классификации символов.
Синтаксис #include
int isprint(int ch);
Файл, содержащий ctype.h прототип
Описание isprint - это макрокованда, которая классифицирует целые значения в коде ASCII просмотром таблицы. При true она возвращает ненулевое значение и 0 при false. Она определена только в том случае, если isascii(ch) равно true или ch = EOF.
Вы можете вместо макрокоманды, использовать функ- цию, если воспользуетесь директивой #undef.
Возвращаемое isprint возвращает ненулевое значение если ch - значение это печатаемый символ (0x20 - 0x7E)
Переносимость isprint доступна в системах UNIX и поддерживается стандартом ANSI C.
Пример:
#include
#include
int main(void) { char c = 'C'; if(isprintt(c)) printf("%c - печатаемый символ\n",c); else printf("%c - не является песатаемым символом\n",c); return 0; }

Ispunct

ispunct
Функция Макро классификации символов.
Синтаксис #include
int ispunct(int ch);
Файл, содержащий ctype.h прототип
Описание ispunct - это макрокоманда, которая классифицирует целые значения в коде ASCII просмотром таблицы. При true она возвращает ненулевое значение и 0 при false. Она определена только в том случае, если isascii(ch) равно true или ch = EOF.
Вы можете вместо макрокоманды, использовать функ- цию, если воспользуетесь директивой #undef.
Возвращаемое ispunct возвращает ненулевое значение если ch - значение это символ разделитель (iscntrl или isspace)
Переносимость ispunct доступна в системах UNIX и поддерживается стандартом ANSI C.
Пример:
#include
#include
int main(void) { char c = 'C'; if(isprintt(c)) printf("%c - символ разделитель\n",c); else printf("%c - не является символом разделителем\n",c); return 0; }

Isspace

isspace
Функция Макро классификации символов.
Синтаксис #include
int isspace(int ch);
Файл, содержащий ctype.h прототип
Описание isspace - это макрокоманда, которая классифицирует целые значения в коде ASCII просмотром таблицы. При true она возвращает ненулевое значение и 0 при false. Она определена только в том случае, если isascii(ch) равно true или ch = EOF.
Возвращаемое isspace возвращает ненулевое значение если ch - значение это пробел, возврат каретки, переход на новую стро- ку, вертикальная табуляция или новая страница (0x09-0x0D, 0x20)
Переносимость isspace доступна в системах UNIX и поддерживается стандартом ANSI C.
Пример:
#include
#include
int main(void) { char c = 'C'; if(isspace(c)) printf("%c - символ разделитель\n",c); else printf("%c - не является символом разделителем\n",c); return 0; }

Isupper

isupper
Функция Макро классификации символов.
Синтаксис #include
int isupper(int ch);
Файл, содержащий ctype.h прототип
Описание isupper - это макрокоманда, которая классифицирует целые значения в коде ASCII просмотром таблицы. При true она возвращает ненулевое значение и 0 при false. Она определена только в том случае, если isascii(ch) равно true или ch = EOF.
Возвращаемое isupper возвращает ненулевое значение если ch - значение это буква в верхнем регистре (A-Z).
Переносимость isupper доступна в системах UNIX и поддерживается стандартом ANSI C.
Пример:
#include
#include
int main(void) { char c = 'C'; if(isupper(c)) printf("%c - буква в верхнем регистре\n",c); else printf("%c - не является буквой в верхнем регистре\n",c); return 0; }

Isxdigit

isxdigit
Функция Макро классификации символов.
Синтаксис #include
int isxdigit(int ch);
Файл, содержащий ctype.h прототип
Описание isxdigit - это макрокованда, которая классифицирует целые значения в коде ASCII просмотром таблицы. При true она возвращает ненулевое значение и 0 при false. Она определена только в том случае, если isascii(ch) равно true или ch = EOF.
Возвращаемое isxdigit возвращает ненулевое значение если ch - значение это шестнадцатеричная цифра (0-9, A-F, a-f)
Переносимость isxdigit доступна в системах UNIX и поддерживается стандартом ANSI C.
Пример:
#include
#include
int main(void) { char c = 'C'; if(isxdigit(c)) printf("%c - шестнадцатеричная цифра\n",c); else printf("%c - не является шестнадцатеричной цифрой\n",c); return 0; }

Itoa

itoa
Функция Преобразует целое значение в строку символов.
Синтаксис #include
char *itoa(int value, char * string, int radix);
Файл, содержащий stdlib.h прототип
Описание Эта функция преобразует значение value в строку символов, оканчивающуюся нулем, и записывают результат в параметр string. Для функции itoa значение value - целое.
Параметр radix определяет базис, который будет ис- пользован при преобразовании значения value; он должен лежать между 2 и 36 (включительно). Eсли значение value отрицательно, и значение radix 10, первый символ строки string - знак минус (-).
Примечание:Пространство, выделяемое для параметра string должно быть достаточным, чтобы записать полученную в результате работы функции строку, включая нулевой байт (\0). Функция itoa может возвращать до 17 байтов;
Возвращаемое Функция возвращает указатель на строку string, значение причем завершения по ошибке не существует.
Переносимость itoa уникальна для DOS.
Смотри также Пример:
#include
#include
int main(void) { int number = 12345; char string[25]; itoa(number,string,10); printf("Целое: %d, строка: %s\n",number,string); return 0; }

Описание функций Си

Kbhit

kbhit
Функция Производит проверку: есть ли символы в буфере кла- виатуры
Синтаксис #include
int kbhit(void);
Файл, содержащий conio.h прототип
Описание Функция kbhit проверяет, была ли нажата какая-либо клавиша клавиатуры. Нажатая клавиша может быть определена с помощью функций getch или getche.
Возвращаемое Если какая-либо клавиша была нажата, функция значение kbhit возвращает ненулевое значение, если нет, она возвращает 0.
Переносимость kbhit уникальна для DOS.
Смотрите также
Пример:
#include
int main(void) { cprintf("Для продолжения нажмите любую клавишу:"); while(!kbhit()) /* пустой цикл */ cprintf("\r\nБыла нажата клавиша "); return 0; }

Keep

keep
Функция Осуществляет выход в DOS из программы, оставляя, тем не менее еe резидентной.
Синтаксис #include
void keep(unsigned char status, unsigned size);
Файл, содержащий dos.h прототип
Описание Функция keep осуществляет выход в DOS со статусом выхода в переменной status. Текущая программа, тем не менее, остается резидентной. Длина прог- раммы устанавливается в size параграфов, и оста- ток памяти освобождается. Функция keep может быть использована для установки резидентных программ (TSR). Функция keep использует функцию DOS 0x31.
Возвращаемое Отсутствует. значение
Переносимость Функция уникальна для DOS.
Смотрите также
Пример:
/* ПРИМЕЧАНИЕ: Это программа обработки прерывания. Если вы попытаетесь откомпилировать ее с включенной проверкой переполнения стека, то вы не !!! получите правильно работающей прог- раммы. Формула использованая в этой функции, вычисляю- щая число параграфом не обязательно будет работать во всех случаях. Используйте с осторожностью! Резидентные программы являются довольно сложными продуктами, и для них не обеспечивается дополнительная поддержка. Допол- нительную информацию вы найдете в технической докумен- тации по DOS */
#include
/* прерывание по таймеру */ #define INTR 0x1c /* атрибут экрана (голубой или серый) */ #define ATTR 0x7900 /* уменьшить размер стека и локальной памяти, чтобы сделать программу меньше */ extern unsigned _heaplen = 1024; extern unsigned _stklen = 512;
void interrupt (*oldhandler)();
void interrupt handler(void) { unsigned int (far *screen)[80]; static int count; /* для цветного адаптера адрес видеопамяти B800:0000, для монохромного B000:0000 */ screen = MK_FP(0x8000,0); /* увеличить счетчик, и взять его по модклю 10 */ count++; count %= 10; /* вывести число на экран */ screen[0][79] = count+'0'+ATTR; /* вызвать старую функцию обработки прерывания */ oldhandler(); } int main(void) { /* получить адрес текущей программы обработки прерываний по таймеру */ oldhandler = getvect(INTR); /* установить свою программу обработки прерывания */ setvect(INTR,handler); /* _psp содержит начальный адрес области памяти, в которой расположена ваша программа. Вершина стека определяет конец вашей программы. _SS и SP вместе дают конец стека. Возможно вам будет нужно добавить локальную память для собственных нужд, что делается следующим образом: (_SS + ((_SP + локальная память)/16) - _psp) */
keep(0,_SS+(_SP/16)-_psp); return 0; }

Описание функций Си

Labs

labs
Функция Возвращает абсолютное значение длинного целого числа.
Синтаксис #include
long int labs(long int x);
Файл, содержащий math.h, stdlib.h прототип
Описание labs вычисляет абсолютное значение параметра х.
Возвращаемое Возвращает абсолютное значение х.
Переносимость labs доступна в системах UNIX и поддерживается стандартом ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { long result; long x = -12345678L; result = labs(x); printf("число: %ld, абсолютное значение :%ld\n", x,result); return 0; }

Ldexp

ldexp
Функция Вычисляет значение x * 2^exp.
Синтаксис #include
double ldexp(double x, int exp);
Файл, содержащий math.h прототип
Описание ldexp вычисляет значение двойной точности x*2^exp.
Возвращаемое При успешном завершении ldexp возвращает значение вычисленное значение x*2^exp.
Обработку ошибок для ldexp можно изменить с помощью функции matherr.
Переносимость Функция ldexp поддерживается в системе UNIX и стандартом ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { double valus; double x = 2; /* ldexp возводит 2 в степень 3, и затем умножает результат на 2 */ value = ldexp(x); printf("значение ldexp = %lf\n",value); return 0; }

Ldiv

ldiv
Функция Деление двух длинных целых, возвращает частное и остаток.
Синтаксис #include
ldiv_t ldiv(long int numer, long int denom);
Файл содержащий stdlib.h прототип
Описание ldiv делит два длиных целых и возвращает частное и остаток в структуре типа ldiv_t. Параметры numer и denom - это частное и делитель соответственно. Тип ldiv_t определен в файле stdlib.h (с помощью оператора typedef) следующим образом:
typedef struct { long int quot; /* частное */ long int rem; /* остаток */ } ldiv_t;
Возвращаемое ldiv возвращает структуру, элементы
Переносимость ldiv поддерживается стандартом ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { ldiv_t lx; lx = ldiv(100000L, 30000L); printf("100000 div 30000 = %ld, остаток = %ld\n", lx.quot, lx.rem); return 0; }

Lfind

lfind
Функция Выполняет линейный поиск.
Синтаксис #include
void *lfind(const void *key, const void *base, size_t *num, size_t width, int(*fcmp)(const void *,const void *));
Файл, содержащий stdlib.h прототип
Описание lfind производит линейный поиск по значению key в массиве последовательных записей. Она использует определенную пользователем программу сравнения (fcmp).
Массив описывается как как содержащий *num записей, каждая шириной width байт. base указывает начало массива.
lfind возвращает адрес первого, совпада- ющего с искомым, элемента. Если совпаданий не обнаружено, то lfind возвращает NULL. Подпрограмма сравнения должна возвращать 0 если *elem1 == *elem2, и ненулевое значение в противном случае.(elem1 и elem2 это ее параметры).
Переносимость lfind уникальна для DOS.
Смотрите также
Пример:
#pragma warn -rpt #include
#include
int compare(int *x,int *y) { return(*x-*y); } int main(void) { int array[5] = {35,87,46,99,12}; int key; int *result; key = 99; result = lfind(&key,array,5,sizeof(int),compare); if(result) printf("Число %d найдено",key); else printf("Число %d ненайдено",key); return 0; }

Line

line
Функция Рисует линию между двумя указанными точками.
Синтаксис #include
void far line(int x1, int y1, int x2, int y2);
Файл, содержащий graphics.h прототип
Описание line рисует линию, используя текущие цвет, тип и толщину линий, между двумя точками, определенными как (x1, y1) и (x2, y2), не изменяя текущую позицию (CP).
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ними, оснащенных дисплей- ными адаптерами, поддерживающими графи- ческий режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int xmax,ymax;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } setcolor(getmaxcolor()); xmax = getmaxx(); ymax = getmaxy();
/* нарисовать диагональную линию */ line(0,0,xmax,ymax);
/* очистка */ getch(); closegraph(); return 0; }

Linerel

linerel
Функция Рисует линию на заданное расстояние от текущей позиции (CP).
Синтаксис #include
void far linerel(int dx, int dy);
Файл, содержащий graphics.h прототип
Описание linerel рисует линию от CP до точки, находещейся на расстоянии (dx, dy) от CP. CP перемещается на CP + (dx,dy).
Возвращаемое Hет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддерживающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; char msg[80];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } /* переместить текущую позицию (CP) в точку (20,30) */ moveto(20,30); /* создать строку с сообщением */ sprintf(msg," (%d,%d)",getx(),gety()); outtextxy(20,30,msg); /* нарисовать линию относительно текущей позиции */ linerel(100,100); /* создать строку с сообщением */ sprintf(msg," (%d,%d)",getx(),gety()); outtext(msg);
/* очистка */
getch(); closegraph(); return 0; }

Lineto

lineto
Функция Рисует линию от текущей позиции (CP) в точку с координатами (x,y).
Синтаксис #include
void far lineto(int x, int y);
Файл, содержащий graphics.h прототип
Описание lineto рисует линию от CP до точки с координатами (x,y), затем переносит (CP) в (x,y). Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддерживающими графический режим.
Смотри также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; char msg[80];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } /* переместить текущую позицию (CP) в точку (20,30) */ moveto(20,30); /* создать строку с сообщением */ sprintf(msg," (%d,%d)",getx(),gety()); outtextxy(20,30,msg); /* нарисовать линию относительно текущей позиции */ lineto(100,100); /* создать строку с сообщением */ sprintf(msg," (%d,%d)",getx(),gety()); outtext(msg);
/* очистка */ getch(); closegraph(); return 0; }

Localeco

localeconv
Функция Возвращает указатель на текущую структуру locale.
Синтаксис #include
struct lconv *localeconv(void);
Файл, содержащий locale.h прототип
Описание Эта функция устанавливает форматы вавода цен и другие числовые форматы. Однако Turbo C++ в настоящее время поддерживает только locale C. Возвращаемое Возвращает указатель на текущую структу- значение ру locale.Дополнительную информацию вы найдете в файле locale.h.
Переносимость localeconv поддерживается стандартом ANSI C.
Смотрите также
Пример:
#include
#include
int main(void)
{ struct lconv ll; struct lconv *conv = ll; /* считать в структуру данные */ conv = localeconv(); /* распечатать содержимое */ printf("Десят тчк : %s\n,conv->desimal_point); printf("Раздел тысяч : %s\n,conv->thousands_sep); printf("Группирование : %s\n,conv->grouping); printf("Меж-ный сим.вал. : %s\n,conv->int_curr_sumbol); printf("$ раздел. тысяч : %s\n,conv->mon_thounsands_sep); printf("$ группирован. : %s\n,conv->mon_grouping); printf("Полож.знак : %s\n,conv->positive_sign); printf("Отрицат.знак : %s\n,conv->negative_sign); printf("Межд.частич.сим. : %d\n,conv->int_frac_digits); printf("Частичные числа : %d\n,conv->frac_digits); printf("Предшест.сим.вал. : %d\n,conv->p_cs_precedes); printf("Раздел.полож.знака : %d\n,conv->p_sep_by_space); printf("Предшест.сим. вал. : %d\n,conv->n_cs_precedes); printf("Раздел.отриц.знака : %d\n,conv->n_sep_by_space); printf("Позиция полож.знака: %d\n,conv->p_sign_posn); printf("Позиция отриц.знака: %d\n,conv->n_sign_posn); return 0; }

Localtim

localtime
Функция Преобразует дату и время в структуру.
Синтаксис #include
struct tm *localtime(const time_t * clock);
Файл, содержащий time.h прототип
Описание localtime получает адрес значения возвращаемого функцией time и возвращает указатель на структуру типа tm, содержащую разделенное время. localtime преобразует время к местной временной зоне и возможно к летнему времени. Глобальная переменная типа long timezone должна содержать разницу в секундах между временем по Гринвичу и местным временем. Глобальная переменная daylight должна быть равна 0, если не используется стандартное летнее время. Структура tm объявленна в time.h следующим образом:
struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; };
Эти элементы содержат время в 24-часовой записи, день месяца 1-31, месяц 1-12, день недели (воскресенье = 0), год - 1900, день года 0-365, и флаг, определяющий действует ли летнее время.
Возвращаемоe localtime возвращает указатель на значение структуру, содержащую разделенное время. Эта структура имеет класс памяти static и перезаписывается при каждом вызове.
Переносимость localtime доступна в системах UNIX и поддерживается стандартом ANSI C.
Смотрите также
Пример:
#include
#include
#include
int main(void) { time_t timer; struct tm *tblock; timer = time(NULL); tblock = localtime(&timer); printf("Местное время: %s",asctime(tblock)); return 0; }

Lock

lock
Функция Блокирует доступ к части файла.
Синтаксис #include
int lock(int handle, long offset, long length);
Файл, содержащий io.h прототип
Описание lock позволяет вам использовать механизм разделения доступа к файлам введенный в DOS 3.x. Перед исполь- зованием этой функции необходимо загрузить SHARE.EXE.
С помощью данной функции можно заблокировать лю- бые неперекрывающиеся области файла. Программа, пытающаяся считывать или записывать в блоки- рованной облясти файла, делает три попытки. Если все три попытки окончились неудачей, то операция заканчивается по ошибке.
Возвращаемое Функция возвращает 0 при успешном значение завершении, и -1 при ошибке.
Переносимость Функция уникальна для систем DOS версий 3.x. Более ранние версии DOS не поддерживают этих вызовов.
Смотрите также
Пример:
#include
#include
#include
#include
#include
#include
int main(void) { int handle,status; long length; /* для поддержки разделения файлов необходимо пред- варительно загрузить SHARE.EXE. */ handle = sopen("c:\\autoexec.bat", O_RDONLY, SH_DENYNO, S_IREAD); if(!handle) { printf("Ошибка при операции sopen"); exit(1); } length = filelength(handle); status = lock(handle,0L,length/2); if(status == 0) printf("Успешная операция блокировки"); else printf("Ошибка при операции блокировки"); status = unlock(handle,0L,length/2); if(status == 0) printf("Успешная операция разблокировки"); else printf("Ошибка при операции разблокировки"); close(handle); return 0; }

Log

log
Функция Вычисляет натуральный логарифм ln(x).
Синтаксис Версия для вещественных Версия для комплексных #include #include
double log(double x); complex log(complex x);
Файл, Версия для вещественных Версия для комплексных содерж. math.h complex.h прототип
Описание log вычисляет натуральный логарифм от х.
Натуральный логарифм для комплексных чисел определяетя следующим образом:
log(z) = log(abs(z)) + i arg(z)
Возвращаемое При успешном завершении log возвращает значение вычисленное значение (ln(x)). Если аргумент х передаваемый функции log меньше 0, то глобальной переменной errno присваивается значение:
EDOM - Ошибка области определения.
log(0) возвращает значение обратное HUGE_VAL иприсваивает глобальное переменной errno значение ERANGE.
Обработку ошибок для данной функции можно изменить с помощью функции matherr.
Переносимость Версия log для вещественных чисел доступна в системах UNIX и поддержива- ется стандартом ANSI C. Комплексная версия log требует С++ и, скорее всего не переносима.
Смотрите также 0,
Пример:
#include
#include
int main(void) { double result; double x = 8.6872; result = log(x); printf("Нат.логарифм от %lf равен %lf\n",x,result); return 0; }

log10

Функция Вычисляет десятичный логарифм log10(x).

Синтаксис Версия для вещественных Версия для комплексных #include #include

double log10(double x); complex log10(complex x);

Файл, Версия для вещественных Версия для комплексных содерж math.h complex.h прототип

Описание log10 вычисляет десятичный логарифм от х.

Десятичный логарифм комплексного числа определя- ется следующим образом:

log10(z) = log(z)/log(10)

Возвращаемое При успешном завершении log10 возвращает значение вычисленное значение (log10(x)). Если аргумент х передаваемый функции log10 меньше 0, то глобальной переменной errno присва- ивается значение:

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

log10(0) возвращает значение обратное HUGE_VAL.

Обработку ошибок для данной функции можно изменить с помощью функции matherr.

Переносимость Версия log10 для вещественных чисел доступна в системах UNIX и поддерживается стандартом ANSI C. Комплексная версия log10 требует С++ и поэтому скорее всего не переносима.

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

Пример:

#include

#include

int main(void) { double result; double x = 800.6872; result = log10(x); printf("Десятичный логарифм от %lf равен %lf\n",x,result); return 0; }

Longjmp

longjmp
Функция Выполняет нелокальный переход.
Синтаксис #include
void longjmp(jmp_buf jmpb, int retval);
Файл, содержащий setjmp.h прототип
Описание Вызов функции longjmp восстанавливает состояние задачи, которое было установлено при последнем вызове функции setjmp с аргументом jmpb. Затем она возвращает значение retval также,как и функ- ция setjmp.
Cостояние задачи представляет собой следующее:
- все сегментные регистры (CX,DS,ES,SS); - переменные-регистры (SI,DI); - указатель стека (SP); - указатель базы (BP); - флаги.
Состояние задачи является достаточно полным, так что функции setjmp и longjmp могут быть использо- ваны как инструмент для организации сопрограмм. Данные подпрограммы могут быть полезны для работы с ошибками и исключительными ситуациями, происхо- дящими в низкоуровневых подпрограммах прикладных программ.
Перед использованием функции longjmp необходимо вызвать функцию setjmp. Программа вызывающая setjmp и устанавливающая jmpb должна оставаться активной и не должна возвращать управления до вы- зова longjmp. Если это случится, то результат непредсказуем.
longjmp не может посылать значение 0. Если 0 по- сылается в retval, то он заменяется на 1.
Примечание. Функции setjmp и longjmp нельзя ис- пользовать для реализации оверлейных программ. Обычно setjmp и longjmp сохраняют и восстананав- ливают все, необходимые для реализации сопрог- рамм, однако для управления оверлеями необходимо следить за стеком, причем подразумевается, что стек один. При реализации сопрограмм вы обычно используете два стека, или две части одного сте- ка, и поэтому администратор оверлеев не сможет корректно их отслеживать.
Вы можете иметь задачи, работающие в фоновом ре- жиме, которые используют свой стек,или свой раз- дел общего стека, однако вы должны быть уверены, что они не используют оверлеев, и вы не должны использовать оверлейные версии setjmp и longjmp для переключения на эти фоновые задачи.
Возвращаемое Нет. значение
Переносимость Функция поддерживаются на системах UNIX и стандартом ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { jmp_buf jumper; int value; value = setjmp(jumper); if (value != 0) { printf("longjmp со значением %d\n", value); exit(value); } printf("Вызов подпрограммы ... \n"); subroutine(); } subroutine() { longjmp(jumper,l); }
Вывод:
Вызов подпрограммы ... Longjmp со значением l

Lowvideo

lowvideo
Функция Устанавливает низкую интенсивность выводимых символов.
Синтаксис #include
void lowvideo(void);
Файл содержащий conio.h прототип
Описание lowvideo обнуляет бит интенсивности в поле атрибутов текущего цвета символов.
Вызов этой функции не отражается на на тексте, находящемся на экране, а только на результате работы функций, производя- щих вывод в текстовом режиме на консоль, и только после вызова функции liwvideo.
Возвращаемое Нет. значение
Переносимость lowvideo работает только на компьютерах совместимых с IBM PC. Аналогичная функции есть в Turbo Pascal.
Смотрите также
Пример:
#include
int main(void) { clrscr(); lowvideo(); cprintf("Текст низкой интенсивности"); highvideo(); gotoxy(1,2); cprintf("Текст высокой интенсивности"); return 0; }

Lsearch

lsearch
Функция Производит линейный поиск.
Синтаксис #include
void *lsearch(const void *key, void *base, size_t num, size_t width, int(*fcmp)(const void *, const void *));
Файл, содержащий stdlib.h прототип
Описание lsearch производит просмотр таблицы. Т.к. это ли- нейный поиск, то элементы таблицы не должны быть отсортированы, перед вызовом функции lsearch. Ес- ли элемент, на который указывает key, не найден в таблице, то lsearch добавляет его к ней.
base - это указатель на базу (0-ой элемент) таб- лицы.
num - указывает на целое значение, определяющее число элементов в таблице.
key - указывает на искомый элемент.
wight- содержит размер элемента таблицы в байтах.
Аргумент fcmp указывает на программу сравнения написанную пользователем. Она должна сравнивать два элемента и возвращать результат сравнения.
При просмотре таблицы lsearch вызывает программу сравнения, на которую указывает аргумент fcmp.
При каждом вызове программы сравнения lsearch по- сылает ей два ппараметра: key - указатель на ис- комый элемент, и elem - указатель на элемент в таблице.
fcmp может интерпретировать полученные параметры любым путем.
Возвращаемое lsearch возвращает адрес первого элемента в значение таблице, совпадающего с искомым.
Если key совпадает с elem, то fcmp возвращает 0, в противном случае fcmp возвращает ненулевое зна- чение.
Переносимость lsearch доступна в системах UNIX.
Смотрите также
Пример:
#include
#include
#include
/* инициализировать число цветов */ char *color[10] = {"Red","Blue","Green"}; int ncolors = 3;
int colorscmp(char **arg1, char **arg2) { return(strcmp(*arg1,*arg2)); }
int addelem(char *color) { int oldn = ncolors; lsearch(&color, colors, (size_t*)&colors, sizeof(char*), colorscmp); return(ncolors = oldn); }
int main(void)
{ int i; char *key = "Purple";
if(addelem(key)) printf("%s уже в таблице", key); else printf("%s добавлен в таблицу цветов ", "теперь в ней %d цветов",key,ncolors); printf("Цвета:"); for(i=0; i

Lseek

lseek
Функция Перемещает указатель чтения/записи файла.
Синтаксис #include
long lseek(int handle, long offset,int fromwhere);
Файл, содержащий io.h прототип
Описание Функция lseek устанавливает указатель файла, свя- занный с параметром handle, в новую позицию, ко- торая находится на offset байтов относительно местоположения заданного параметром fromwhere. Параметр fromwhere должен иметь одно из трех зна- чений 0, 1 или 2, которые представлены тремя сим- волическими константами (определенными в файле stdio.h) следующим образом: --------------------------------------------------¬ ¦Параметр fromwhere Месторасположение ¦ ¦ в файле ¦ +-------------------------------------------------+ ¦SEEK_SET (0) начало файла ¦ ¦SEEK_CUR (1) текущая позиция указател¦ ¦ файла ¦ ¦SEEK_END (2) конец файла ¦ L--------------------------------------------------
Возвращаемое Функция lseek возвращает значение смещения значение новой y позиции указателя, измеряемой в байтах от начала файла. В случае ошибки функция lseek возвращает значение -1L и глобальная перемен- ная errno получает одно из следующих значений:
EBADF - неверный номер файла; EINVAL - неверный аргумент.
На устройствах, непригодных для поиска, таких, как терминалы и принтеры,возвращаемое значение неопределено.
Переносим. lseek поддерживается на всех системах UNIX.
Смотрите также
Пример:
#include
#include
#include
#include
#include
int main(void) { int handle; char msg[] = "Это тест"; char ch; /* создать файл */ handle = open("TEST.$$$",O_CREAT|O_RDWR,S_IREAD|S_IWRITE); /* вывести в файл данные */ write(handle,msg,strlen(msg)); /* переместить указатель в начало файла */ lseek(handle,0L,SEEK_SET); /* считывать данные из файла, пока не встретим EOF */ do { read(handle,&ch,1); printf("%c",ch); } while(!eof(handle)); close(handle); return 0; }

Ltoa

ltoa
Функция Преобразует длинное целое значение в строку символов.
Синтак. #include
char *ltoa(long value, char *string, int radix);
Файл, сод. stdlib.h прототип
Описание Эта функция преобразует значение value в строку символов, оканчивающуюся нулем, и записывают результат в параметр string. Для функции ltoa значение value - длинное целое.
Параметр radix определяет базис, который будет использован при преобразовании значения value; он должен лежать между 2 и 36 (включительно). Eсли значение value отрицательно, и значение radix 10, первый символ строки string - знак минус (-).
Примечание. Пространство, выделяемое для параметра string должно быть достаточным, чтобы записать полученную в результате работы функции строку, включая нулевой байт (\0). Функция ltoa может возвращать до 33 байтов;
Возвращаемое Функция возвращает указатель на строку значение string.
Переносимость ltoa уникальна для DOS.
Смотрите также
Пример:
#include
#include
int main(void) { char string[25]; long value = 123456789L; ltoa(value,string,10); printf("число = %ld строка: %s\n",value,string); return 0; }

Описание функций Си

Malloc

malloc
Функция Выделяет память.
Синтаксис #include
#include
void *malloc(size_t size);
Файл, содержащий stdlib.h и alloc.h прототип
Описание Функция обеспечивают выделение блока памяти, раз- мером size байт.Она позволяет программе выделять память по необходимости и столько, сколько нужно.
Динамическая область памяти доступна для динами- ческого размещения блоков памяти переменной дли- ны. Многие структуры данных, такие как "деревья" или "списки" - естественным образом используют динамическое распределение памяти.
В малых моделях памяти, вся область памяти между концом сегмента данных и вершиной программного стека доступна для использования, за исключением 256-байтовой границы, находящейся непосредственно перед вершиной стека. Данная граница предназначе- на для наращивания стека прикладной программы (плюс небольшое количество, требуемое для DOS).
В больших моделях памяти все пространство после программного стека до конца физической памяти доступно для динамической области.
Возвращаемое значение Функция malloc возвращает указатель на блок выде- ленной памяти. Если для размещения блока недоста- точно памяти, функция malloc возвращает NULL. Со- держимое блока остается неизменным. Если аргумент size равен 0, то функция возвращает NULL.
Переносимость Функция доступна в системах UNIX и поддерживается стандартом ANSI C.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { char *str; /* выделить память под строку */
if((str = malloc(10)) == NULL) { printf("Недостаточно памяти\n"); exit(1); /* завершение с кодом ошибки */ } /* скопировать в строку "Hello" */ strcpy(str,"Hello"); /* вывести строку */ printf("Строка: %s\n",str); /* освободить память */ free(str); return 0; }

Matherr

matherr
Функция Процедура обработки ошибок операций с плавающей точкой, модифицируемая пользователем
Синтаксис #include
int matherr(struct exception *e);
Файл, содержащий math.h прототип
Описание Функция matherr вызывается для обработки ошибок, генерируемых функциями из библиотеки математичес- ких функций.
matherr служит в качестве пользовательской ловуш- ки, (функции определяемой пользователем) которую вы можете написать сами (смотрите пример).
matherr сожно использовать для отслеживания оши- бок области определения и выхода за пределы диа- пазона, происходящих в математических функциях. Она не отслеживает исключительных ситуаций, воз- никающих при работе со значениями с плавающей точкой (например при делении на 0). Для отслежи- вания таких ошибок смотри функцию signal.
Вы можете модифицировать процедуру matherr специ- ально для вашего случая (то есть она будет отлав- ливать определенные типы ошибок); модифицирован- ная функция matherr должна возвращать 0, если она не может обработать данную ошибку, и 1, если ошибка успешно обработана. Если функция matherr возвращает ненулевое значение, сообщение об ошиб- ке не печатается, и переменная errno не изменяет- ся.
Ниже приведена структура exception (определенная в файле math.h):
struct exception { int type; char *Function; double arg1, arg2, retval; };
Составные части структуры exception обозначают следующее:
---------T-------------------------------------------------¬ ¦Имя ¦ Что это ¦ +--------+-------------------------------------------------+ ¦type ¦ тип произошедшей математической ошибки; тип enum¦ ¦ ¦ определен в typedef_mexcep (смотрите определение¦ ¦ ¦ после данного списка). ¦ ¦Function¦ указатель на символьную строку с нулевым ¦ ¦ ¦ окончанием, содержащую имя библиотечной ¦ ¦ ¦ математической функции, которая выдала ошибку. ¦ ¦arg1, ¦ аргументы (переданные данной функции), которые ¦ ¦arg2 ¦ вызвали ошибку; если функции передается только ¦ ¦ ¦ один аргумент, он хранится в arg1. ¦ ¦retval ¦ стандартное возвращаемое значение для функции ¦ ¦ ¦ matherr; вы можете модифицировать это значение. ¦ L--------+--------------------------------------------------

Параметр typedef_mexcep, также определенный в файле math.h, перечисляет следующие символические константы, представляющие собой возможные матема- тические ошибки:

----------------T------------------------------------------¬ ¦Символическая ¦ Математическая ошибка ¦ ¦константа ¦ ¦ +---------------+------------------------------------------+ ¦DOMAIN ¦ аргумент не находится в области ¦ ¦ ¦ определения функции (например log(-1)); ¦ ¦SING ¦ аргументы дают ошибку в сингулярности ¦ ¦ ¦ (например pow(0,-2)); ¦ ¦OVERFLOW ¦ аргумент приводит к результату, превыша- ¦ ¦ ¦ ющему MAXDOUBLE (например exp(1000)); ¦ ¦UNDERFLOW ¦ аргумент приводит к результату, меньшему ¦ ¦ ¦ MINDOUBLE (например exp(-1000)); ¦ ¦TLOSS ¦ аргументы дают результат с потерей значащ¦ ¦ ¦ цифр например sin(10e70)). ¦ L---------------+-------------------------------------------

Символические константы MAXDOUBLE и MINDOUBLE оп- ределены в файле values.h.

Исходный код для функции matherr, определенной по умолчанию находится на дистрибутивных дисках с системой Turbo C++.

Стандарт UNIX функции matherr несовместим со стандартом ANSI C. Если вам требуется версия фун- кции matherr для системы UNIX, пользуйтесь прог- раммой matherr.c, поставляемой на дистрибутивных дискетах пакета Turbo C.

Возвращаемое значение По умолчанию функция matherr возвращает 1 если ошибка UNDERFLOW или TLOSS, иначе 0. Функция matherr также может модифицировать параметр e->retval, который посредством функции matherr передается в вызывающую программу.

Когда функция matherr возвращает 0, (означающий, что обработать ошибку она не может), функция _matherr устанавливает переменную errno и печатает сообщение об ошибке. Когда функция matherr возвра- щает ненулевое значение, (означающее, что ошибка успешно обработана), глобальная переменная errno не устанавливается и сообщение об ошибке не выво- дится.

Переносимость matherr доступна на многих компиляторах Си, одна- ко она не поддерживается стандартом ANSI C. matherr в стиле системы UNIX (которая печатает сообшение и завершает выполнение программы) пос- тавляется вместе с пакетом Turbo C++ в файле MATHERR.C. matherr может не поддерживаться в дальнейших версиях Turbo C++. Пример:

#include

#include

#include

int matherr(struct exception *a); { if (a -> type == DOMAIN) { if(strcmp(a -> name, "sqrt") == 0) { a -> retval = sqrt (-(a -> arg1)); return (1); } } return (0); }

int main(void) { double x,y; x = -2.0; y = sqrt(x); printf("Значение, скорректированное matherr: %lf\n",y); return 0; }

Max

max
Функция Возвращает наибольшее из двух значений.
Синтаксис #include
(type)max(a,b);
Файл содержащий stdlib.h прототип
Описание Эта макрокоманда производит сравнение двух значе- ний и возвращает наибольшее из двух. Объявление функции и оба аргумента должны быть одного типа.
Возвращаемое значений max возвращает наибольшее из двух значений.
Смотрите также
Пример:
#include
int main(void) { int x = 5; int y = 6; int z; z = max(x,y); printf("Наибольшее значение: %d\n",z); return 0; }
Вывод:
Наибольшее значение: 6

Memccpy

memccpy
Функция Копирует блок размером в n байт.
Синтаксис #include
void *memccpy(const void *dest, const void *src, int c, size_t n); Файл содержащий mem.h
Описание memccpy копирует блок из n байт из src в dest. Ко- пирование прекращается при следующих обстоятель- ствах:
- первым копируется символ c;
- в dest скопировано n байт;
Возвращаемое значение memccpy возвращает указатель на байт, сразуже следующий за с, если он был скопирован. В противном случае memccpy возвращает NULL.
Переносимость memccpy доступна в UNIX System V.
Смотрите также
Пример:
#include
#include
int main(void) { char *src = "This is the source string"; char dest[50]; char *ptr; ptr = memccpy(dest,src,'c',strlen(src)); if(ptr) { *ptr = '\0'; printf("Был найден символ %s\n",dest); } else printf("Символ не найден\n"); return 0; }

Memchr

memchr
Функция Просматривает n байт в поисках символа c.
Синтаксис #include
void *memchr(const void *s, int c, size_t n);
Файл содержащий mem.h, string.h
Описание memchr просматривает блок размером n байт, на ко- торый указывает параметр s, в поисках символа c.
Возвращаемое значение При успешном завершении memchr возвращает указатель на первый байт, содержащий с, в противном случае memchr возвращает NULL.
Переносимость memchr доступна в UNIX System V и поддерживается стандартом ANSI C.
Пример:
#include
#include
int main(void) { char *src = "This is a string"; char *ptr; ptr = memchr(src,'r',strlen(src)); if(ptr) { printf("Был найден символ 'r'на позиции %d\n",ptr-src); } else printf("Символ не найден\n"); return 0; }

Memcmp

memcmp
Функция Сравнивает два блока каждый из которых длино в n байт.
Синтаксис #include
void *memcmp(const void *s1, const void *s2, size_t n);
Файл содержащий mem.h,string.h прототип
Описание memcmp сравнивает первые n байт блоков s1 и s2, как значения типа unsigned char.
Возвращаемое memcmp возвращает значение: значение 0 - если s1 больше s2
Т.к. memcmp производит сравнение значе- ний, имеющих тип unsigned char, то при таком вызове:
memcmp("\xFF", "\x7F",1);
возвращаемое значение будет > 0.
Переносимость memcmp доступна в UNIX System V и поддерживается стандартом ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { char *buf1 = "aaa"; char *buf2 = "bbb"; char *buf3 = "ccc"; int stat; stat = memcmp(buf2,buf1,strlen(buf2)); if(stat>0) printf("buf2 > buf1\n"); else printf("buf2 < buf1\n"); stat = memcmp(buf2,buf3,strlen(buf2)); if(stat buf3\n"); else printf("buf2 < buf3\n"); return 0; }

Memcpy

memcpy
Функция Копирует блок длиной n байт.
Синтаксис #include
void *memcpy(void *dst,const void *src,size_t n);
Файл, содержащий string.h, mem.h прототип
Описание memcpy копирует n байт из src в dst. Если src и dst перекрываются, то поведение функции неопреде- лено.
Возвращаемое memcpy возвращает dst. значение
Переносимость memcpy доступна в UNIX System V и поддерживается стандартом ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { char src[] = "******************************"; char dest[] = "abcdefghijklmnopqrstuvwxyz0123456789"; char *ptr; printf("Строка назначения перед копированием: %s",dest); ptr = memcpy(dest,src,strlen(len)); if(ptr) printf("Строка назначения после копирования: %s",dest); else printf("ошибка memcpy"); return 0; }

Memicmp

memicmp
Функция Сравнивает n байт двух массивов символов, игнори- руя различие регистров.
Синтаксис #include
int memcmp(const void *s1, const void *s2, size_t n);
Файл содержащий mem.h,string.h прототип
Описание memicmp сравнивает первые n байт блоков s1 и s2, игнорируя различия регистров (верхний или ниж- ний).
Возвращаемое memicmp возвращает значение: значение 0 - если s1 больше s2
Переносимость memicmp доступна в UNIX System V.
Смотрите также
Пример:
#include
#include
int main(void) { char *buf1 = "ABCDE123"; char *buf2 = "abcde456"; int stat; stat = memicmp(buf1,buf2,5); printf("Строки до позиции 5"); if(stat) printf("не"); printf("равны"); return 0; }

Memmove

memmove
Функция Копирует блок размером в n байт.
Синтаксис #include
void *memmove(void *dest, const void *src, size_t n);
Файл содержащий mem.h,string.h прототип
Описание memmove копирует блок из n байт из src в dest. Ко- пирование будет произведено корректно, даже, если блоки перекрываются.
Возвращаемое memmove возвращает dest. значение
Переносимость memmove доступна в UNIX System V и поддерживается стандартом ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { char src[] = "******************************"; char dest[] = "abcdefghijklmnopqrstuvwxyz0123456789"; printf("Строка назначения перед копированием: %s",dest); ptr = memmove(dest,src,26); printf("Строка назначения после копирования: %s",dest); return 0; }

Memset

memset
Функция Заполняет блок размером в n байт значениеями c.
Синтаксис #include
void *memset(void *s, int c, size_t n);
Файл содержащий mem.h, string.h прототип
Описание memset присваивает первым n байтам массива s зна- чение c.
Возвращаемое memmove возвращает s. значение
Переносимость memset доступна в UNIX System V и поддерживается стандартом ANSI C.
Смотрите также
Пример:
#include
#include
#include
int main(void) { char buffer[] = "Hello world\n"; printf("Буфер перед использованием функции memset:%s\n",buffer); memset(buffer,'*',strlen(buffer) - 1); printf("Буфер после использованя функции memset:%s\n",buffer); return 0; }

Min

min
Функция Возвращает меньшее из двух значений.
Синтаксис #include
(type)min(a,b);
Файл содержащий stdlib.h прототип
Описание min производит сравнение двух значений и воз- вращает меньшее из двух. Объявление функции и оба аргумента должны быть одного типа.
Возвращаемое min возвращает меньшее из двух значений. значений
Смотрите также
Пример:
#include
#include
int main(void) { int x = 5; int y = 6; printf("Наименьшее значение: %d\n",min(x,y)); return 0; }
Вывод:
Наименьшее значение: 6

MK_FP

MK_FP
Функция Создает "дальний" адресный указатель.
Синтаксис #include
void far *MK_FP(unsigned seg, unsigned ofs);
Файл, содержащий dos.h прототип
Описание MK_FP это макроопределение, которое создает даль- ний указатель из адреса сегмента (seg) и смещения (ofs).
Возвращаемое MK_FR возвращает "дальний" указатель.
Переносимость MK_FP уникальна для Turbo C++.
Смотрите также
Пример:
#include
#include
int main(void) { int gd,gm,i; unsigned int far *screen; getectgraph(&gd,&gm); if(gd == HERMONO) screen = MK_FP(0xB000,0); else screen = MK_FP(0xB800,0); for(i=0; i

Mkdir

mkdir
Функция Создает директорию.
Синтаксис #include
int mkdir(const char *path);
Файл содержащий dir.h прототип
Описание mkdir создает новую директорию по имени данного маршрута.
Возвращаемое При успешном завершении mkdir возвращает 0. При значение возникновении ошибки mkdir возвращает -1 и прис- ваивает глобальной переменной errno одно из сле- дующих значений:
EACCES - Доступ запрещен; ENOENT - Нет такого файла или директории.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { int status; clrscr(); status = mkdir("asdfjklm"); (!status) ? (printf("Директория создана\n")) : (printf("Не могу создать директорию\n")); getch(); system("dir"); getch(); status = rmdir("asdfjklm"); (!status) ? (printf("Директория удалена\n")) : (printf("Не могу удалить директорию\n")); return 0; }

Mktemp

mktemp
Функция Создает уникальное имя файла.
Синтаксис #include
char *mktemp(char *template);
Файл, содержащий dir.h прототип
Описание Функция mktemp помещает в параметр template уни- кальное имя файла и возвращает адрес template.
Параметр template должен представлять собой стро- ку символов с нулевым окончанием и шестью хвосто- выми символами x. Данные 6 знаков X заменяются на уникальное сочетание букв плюс точка таким обра- зом, что две буквы, точка и три буквы суффикса дают в результате новое имя файла.
Новое имя файла присваивается после просмотра имеющихся имен на диске, начиная с имени AA.AAA, и избегая уже существующих имен в том же формате.
Возвращаемое Если параметр template корректно сформирован, значение функция mktemp возвращает адрес символьной строки template. В противном случае она возвращает ноль.
Переносимость Функция поддерживается на системах UNIX.
Пример:
#include
#include
int main(void) { /* fname определяет маску для имени файла */ char *fname = "TXXXXXX", *ptr; ptr = mktemp(fname); printf("%s\n",ptr); return 0; }

Mktime

mktime
Функция Преобразует время к календарному времени.
Синтаксис #include
time_t mktime(struct tm *t);
Файл, содержащий time.h прототип
Описание Преобразует время из структуры, на которую указы- вает параметр t, в календарное время в формат, используемый функцией time. Исходные значение по- лей tm_sec, tm_min, tm_hour, tm_mday и tm_mon не ограничены диапазонами, приведенными при описании структуры tm. Если значение поля выходит за ука- занные пределы, то оно приводится к нужному диа- пазону. Значения для полей tm_wday и tm_yday вы- числяются после приведения остальных значений.
Возвращаемое Смотри комментарии. значение
Переносимость mktime поддерживается стандартом ANSI C.
Смотрите также
Пример:
#include
#include
char *wday[] = {"Воскресенье","Понедельник","Вторник", "Среда","Четверг","Пятница","Суббота", "Неизвестен"};
int main(void) { struct tm time_check; int year,month,day; /* для нахождения дня недели, необходимо ввести день, месяц и год */ printf("Год: "); scanf("%d",&year); printf("Месяц: "); scanf("%d",&month); printf("День: "); scanf("%d",&day); /* занести данные в структуру time_check */ time_check.tm_year = year -1900; time_check.tm_mon = month - 1; time_check.tm_mday = day; time_check.tm_hour = 0; time_check.tm_min = 0; time_check.tm_sec = 0; time_check.tm_isdst = -1; /* для заполнения оставшихся полей вызвать mktime */ if(mktime(&time_check) == -1) time_check.tm_wday = 7; /* вывести день недели */ printf("Это был: %s\n",wday[time_check.tm_wday]); return 0; }

Modf

modf
Функция Расщепляет число (double) на целую и дробную части.
Синтаксис #include
double modf(double x, double *iptr)
Файл, содержащий math.h прототип
Описание modf разделяет число типа double на целую и дроб- ную части. Целая часть помещается в ipart, а дробная часть возвращается.
Возвращаемое modf возвращает дробную часть x. значение
Смотрите также
Пример:
#include
#include
int main(void) { double fraction,integer; double number = 100000.567; fraction = modf(number,&integer); printf("Целая и дробная части числа %lf равны %lf и %lf", number, integer, fraction); return 0; }

Movedata

movedata
Функция Копирует n байт.
Синтаксис #include
void movedata(unsigned segsrc, unsigned offsrc, unsigned segdst, unsigned offdst, size_t n);
Файл, содержащий mem.h, string.h прототип
Описание Функция movedata копирует n байт, с исходного ад- реса (segsrc:offsrc) по адресу (segdest:offdest).
Функция выполняет перемещение блоков данных, не- зависимо от модели памяти.
Возвращаемое Нет. значение
Переносимость movedata уникальна для DOS.
Смотрите также
Пример:
#include
#define COLOR_BASE 0xB800 #define BUFFER_SIZE 80*25*2
char buf[BUFFER_SIZE];
/* сохранить содержимое буфера цветного дисплея в памяти */ void save_color_screen(char near *buffer) { movedata(COLOR_BASE, 0, _DS, (unsigned)buffer, BUFFER_SIZE); } int main(void) { save_color_screen(buf); return 0; }

Moverel

moverel
Функция Перемещает текущую позицию (CP) на заданное рас- стояние.
Синтаксис #include
void far moverel(int dx,int dy);
Файл, содержащий graphics.h прототип
Описание moverel перемещает текущую позицию (CP) на dx точек по оси Х и на dy точек по оси Y.
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; char msg[80];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } /* переместить текущую позицию (CP) в точку (20,30) */ moveto(20,30); /* нарисовать точку */ putpixel(getx(),gety(),getmaxcolor()); /* создать строку с сообщением */ sprintf(msg," (%d,%d)",getx(),gety()); outtextxy(20,30,msg); /* переместить текущую позицию относительно текущего положения */ moverel(100,100); /* нарисовать точку */ putpixel(getx(),gety(),getmaxcolor()); /* создать строку с сообщением */ sprintf(msg," (%d,%d)",getx(),gety()); outtext(msg);
/* очистка */ getch(); closegraph(); return 0; }

Movetext

movetext
Функция Копирует текст на экране из одного прямоугольника в другой.
Синтаксис #include
int movetext(int left, int top, int right, int bottom, int destleft, int desttop);
Файл содержащий conio.h прототип
Описание movetext копирует содержимое прямоугольника на эк- ране, определяемого аргументами left, top, right и bottom, в новый прямоугольник, имеющий теже размеры. Левый верхний угол этого прямоугольника определяется параметрами destleft, desttop.
Все координаты являются абсолютными, т.е. коорди- натами относительно левого верхнего угла экрана.
Текст будет скопирован корректно, даже если пря- моугольники перекрываются.
movetext работает в текстовом режиме и производит непосредственный вывод на экран.
Возвращаемое movetext возвращает ненулевое значение в случае значение успешного завершения. При ошибке (например, если указанные координаты лежат за пределами экрана), movetext возвращает 0.
Переносимость movetext может использоваться на системах IBM PC и совместимых с ней.
Смотрите также
Пример:
#include
#include
int main(void) { char *str = "Это тестовая строка"; clrscr(); cputs(str); getch(); movtext(1,1,strlen(str),2,10,10); getch(); return 0; }

Moveto

moveto
Функция Перемещает текущую позицию (CP) в точку с коор- динатами (x,y).
Синтаксис #include
void far moveto(int x,int y);
Файл, содержащий graphics.h прототип
Описание moveto перемещает текущую позицию (CP) в позицию с координатами (x,y) в текущей области просмотра.
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; char msg[80];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } /* переместить текущую позицию (CP) в точку (20,30) */ moveto(20,30); /* нарисовать точку */ putpixel(getx(),gety(),getmaxcolor()); /* создать строку с сообщением */ sprintf(msg," (%d,%d)",getx(),gety()); outtextxy(20,30,msg); /* нарисовать линию относительно текущей позиции */ moveto(100,100); /* нарисовать точку */ putpixel(getx(),gety(),getmaxcolor()); /* создать строку с сообщением */ sprintf(msg," (%d,%d)",getx(),gety()); outtext(msg); /* очистка */ getch(); closegraph(); return 0; }

Movmem

movmem
Функция Копирует блок, длиной length байт.
Синтаксис #include
void movmem(void *src, void *dest, unsigned length);
Файл, содержащий mem.h прототип
Описание Функция movmem копирует блок длиной length байт с исходного адреса src по адресу dest. Направление копирования всегда выбирается таким образом, что данные всегда копируются точно, даже если блоки перекрываются.
Возвращаемое Нет. значение
Переносимость movmem уникальна для Turbo C++.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { char *source = "Borland International"; char *destination; int length; length = strlen(source); destination = malloc(length+1); movmem(source,destination,length); printf("%s\n",destination); return 0; }

Описание функций Си

Norm

norm
Функция Возвращает квадрат абсолютного значения комплекс- ного числа.
Синтаксис #include
double norm(complex x);
Файл, содержащий complex.h прототип
Описание При использовании norm может произойти переполне- ние, если действительная или мнимая часть будут слишком большими.
Возвращаемое norm(x) возвращает real(x)*real(x)+imag(x)*imag(x). значение
Переносимость Комплексные функции требуют С++ и поэтому непере- носимы.
Смотрите также
Пример:
#include
#include
int main(void) { double x = 3.1,y=4.2; complex z = complex(x,y); cout

Normvide

normvideo
Функция Устанавливает нормальную интенсивность выводимых символов.
Синтаксис #include
void normvideo(void);
Файл, содержащий conio.h прототип
Описание normvideo восстанавливает исходное значение бита интенсивности в поле атрибутов текущего цвета символов.
Вызов этой функции не отражается на на тексте, находящемся на экране, а только на результате ра- боты функций, производящих вывод в текстовом ре- жиме, прямой вывод на консоль, и только после вы- зова функции normvideo.
Возвращаемое Нет. значение
Переносимость normvideo работает только на компьютерах совмести- мых с IBM PC. Аналогичная функции есть в Turbo Pascal.
Смотрите также
Пример:
#include
int main(void) { clrscr(); lowvideo(); cprintf("Текст низкой интенсивности"); highvideo(); cprintf("Текст высокой интенсивности"); normvideo(); cprintf("Текст нормальной интенсивности"); return 0; }

Nosound

nosound
Функция Выключает встроенный динамик.
Синтксис #include
void nosound(void);
Файл, содержащий dos.h прототип
Описание Выключает встроенный динамик, включенный функцией sound.
Возвращаемое Нет. значение
Переносимость nosound работает только на компьютерах совмести- мых с IBM PC. Аналогичная функции есть в Turbo Pascal.
Смотрите также
Пример:
/* Звук частотой 7 Гц в течении 5 секунд История. 7 Гц - это резонансная частота черепной впа- дины цыплят. Это было обнаружено эмпирически в Австра- лии, на птицефабрике, где при включении такого звука, все цыплята, находившиеся достаточно близко, умирали. Возможно встроенный динамик вашего компьютера не может генерировать такой звук. /
int main(void) { sound(7); delay(5000); nosound(); return 0; }

Описание функций Си

Open

open
Функция открывает файл для чтения или записи.
Синтаксис #include
#include
int open(const char *filename, int access [, unsigned mode]); Файл, содержащий io.h прототип
Описание Функция open открывает файл, имя которого опреде- лено параметром filename, и подготавливает его к последующим операциям чтения и/или записи, в за- висимости от параметра access.
Для создания файла в обычном режиме, вы можете присвоить соответствующее значение _fmode, или при открытии файла указать опции O_CREAT и O_TRUNC связанные операцией побитового логическо- го сложения (OR) с необходимым режимом передачи. К примеру:
open("xmp",O_CREAT|O_TRUNC|O_BINARY,S_IREAD);
создает двоичный файл с атрибутом только для чте- ния с именем XMP, причем, если он уже существует, то он обрезается до нулевой длины.
Для функции open параметр access конструируется путем логического побитового сложения флагов, пе- речисленных в двух следующих списках. Из первого списка может быть использован только один флаг; остальные флаги могут применяться в любых логи- ческих комбинациях.
Список 1: флаги чтения/записи.
O_RDONLY открытие только для чтения. O_WRONLY открытие только для записи. O_RDWR открытие для чтения и записи.
Список 2: остальные флаги доступа.
O_NDELAY Не используется; для совместимости с системой UNIX. O_APPEND Если флажок установлен, то перед каждой операцией записи, указатель файла бу- дет устанавливаться на конец файла. O_CREAT Если файл существует, этот флажок не имеет никакого значения. Если файл не существует, он будет создан, и биты из аргумента mode будут использованы для установки битов-атрибутов файла, как и в функции chmod. O_TRUNC Если файл существует, его длина усека- ется до 0. Атрибуты файла остаются не- изменными. O_EXCL Используется только вместе с O_CREAT. Если файл уже существует, то происходит возврат по ошибке. O_BINARY Данный флаг может быть установлен для гарантированного открытия файла в двоичном режиме. O_TEXT Данный флаг может быть установлен для гарантированного открытия файла в текс- товом режиме.

Эти константы (O_...) определены в файле fcntl.h.

Если ни O_BINARY, ни O_TEXT не указаны, файл отк- рывается в режиме трансляции, соответственно гло- бальной переменной _fmode.

Если в построении параметра access участвует флаг O_CREAT, вам необходимо указать аргумент mode из следующих символических констант, определенных в файле sys\stat.h.

-------------------------------------------------- Значение параметра Возможности доступа mode -------------------------------------------------- S_IWRITE Разрешение на запись. S_IREAD Разрешение на чтение. S_IREAD/S_IWRITE Разрешение на чтение/запись. --------------------------------------------------

Возвращаемое При успешном завершении open возвращает целое значение неотрицательное число handle - логический номер открытого файла. Указатель файла (указатель теку- щей позиции) устанавливается на начало файла. При ошибке функция возвращает значение -1, и перемен- ная errno получает одно из следующих значений:

ENOENT - Маршрут или имя файла не найдены; EMFILE - Слишком много открытых файлов; EACCES - Доступ запрещен; EINVACC - Неверный код доступа.

Переносимость Функция open поддерживается на системах UNIX. На версии 7 системы UNIX мнемоника O_тип не опре- делена. Система UNIX SYSTEM 3 пользуется всеми мнемониками O_тип за исключением O_BINARY.

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

Outport

outport
Функция Производит вывод в порт.
Синтаксис void outport(int portid, int value);
Файл, содержащий dos.h прототип
Описание outport записывает значение параметра value в вы- ходной порт, определяемый параметром portid.
Возвращаемое Нет. значение
Переносимость Эта функция уникальна для DOS.

Outportb

outportb
Функция Производит вывод в порт байта.
Синтаксис void outport(int portid, unsigned char value);
Файл, содержащий dos.h прототип
Описание outportb - это макрокоманда, которая записывает значение параметра value в выходной порт, опреде- ляемый параметром portid.
При вызове outportb при указанном включаемом фай- ле dos.h, то outportb рассматривается как макро, и расширяется во встроенный машинный код.
Если вы не включаете файл dos.h, или если вы от- менили outportb командой #undef, то получите фун- кцию outportb.
Возвращаемое Нет. значение
Переносимость Эта функция уникальна для DOS.
Смотрите также

Outtext

outtext
Функция Отображает строку в окне экрана.
Синтаксис #include
void far outtext(char far *textstring);
Файл, содержащий graphics.h прототип
Описание outtext отображает строку текста в окне, используя текущие установленные параметры вырав- нивания текста, а также текущие шрифт, направле- ние и размер.
outtext выводит текст в текущую позицию. Если горизонтальное выравнивание текста равно LEFT_TEXT и направление вывода текста установле- но равным HORIZ_DIR, координата x текущей пози- ции продвигается с помощью textwidth(textstring).Иначе текущая позиция ос- тается неизменной.
Для обеспечения совместимости кодов поддержки при использовании различных шрифтов,используйте textwidth и textheight для определения размеров строки.
Замечание. Если строка печатается установленным по умолчанию шрифтом с помощью функции outtext, то любая часть строки , которая выходит за пре- делы текущего окна, отсекается.
Замечание. outtext предназначен для работы в графическом режиме и не будет работать в тексто- вом режиме.
Возвращаемое Нет. значение
Переносимость Эта функция пригодна только для компьюте- ров IBM PC и совместимых с ними, оснащенных дис- плейными адаптерами, поддерживающими графический режим.
Смотрите также

Outtextx

outtextxy
Функция Отображает строку в указанной области.
Синтаксис #include
void far outtextxy(int x,int y, char far *textstring);
Файл, содержащий graphics.h прототип
Описание outtext отображает строку текста в окне экрана в заданной позиции (x,y), используя теку- щие установленные параметры выравнивания текста, а также текущие шрифт, направление и размер.
Для обеспечения совместимости кодов поддержки при использовании различных шрифтов,используйте textwidth и textheight для определения размеров строки.
Замечание. Если строка печатается установленным по умолчанию шрифтом с помощью функций outtext и outtextxy, то любая часть строки , которая выхо- дит за пределы текущего окна отсекается.
Замечание. outtext предназначен для работы в графическом режиме и не будет работать в тексто- вом режиме.
Возвращаемое Нет. значение
Переносимость Эта функция пригодна только для компьюте- ров IBM PC и совместимых с ними, оснащенных дис- плейными адаптерами, поддерживающими графический режим.
Смотрите также

Описание функций Си

Parsfnm

parsfnm
Функция Выделяет имя файла.
Синтаксис #include
char *parsfnm(const char * cmdline, struct fcb *fcb, int opt);
Файл, содержащий dos.h прототип
Описание Функция parsfnm выделяет из строки символов (обычно командной строки) с адресным указателем cmdline имя файла. Имя файла помещается в блок FCB как имя устройства, имя файла и расширение имени файла. Указателем на блок FCB является ука- затель fcbptr. Параметр opt представляет собой значение, переда- ваемое в регистре AL, при вызове соответствующей функции DOS, выделяющий имя файла. Смотрите "Справочное руководство программиста по DOS", в котором вы можете найти подробное описание сис- темного вызова 0x29, выполняющего вышеописанные действия.
Возвращаемое При успешном завершении функция parsfnm возвращает значение указатель на байт, следующий за концом имени фай- ла. Если при выполнении функции произошла какая- либо ошибка, функция возвращает значение 0.
Переносимость Функция уникальна для DOS.
Пример:
#include
#include
#include
#include
int main(void) { char line[80]; struct fcb blk; /* получить имя файла */ printf("Введите имя устройства и файл (без маршрута, т.е.\ a:filename.ext)\n"); gets(line); /* поместить имя файла в FCB (Блок управления файлом) */ if(parsfnm(line,&blk,1) == NULL) printf("Ошибка при вызове parsfnm.\n"); else printf("Устройство: #%d Имя: %11s\n",blk.fcb_drive, blk.fcb_name); return 0; }

Peek

peek
Функция Возвращает содержимое слова памяти с адресом segment:offset.
Синтаксис #include
int peek(unsigned segment, unsigned offset);
Файл, содержащий dos.h прототип
Описание Функция peek возвращает содержимое слова памяти, по адресу segment:offset.
Если функция вызывается при подключенном файле dos.h, она трактуются, как макрокоманда, которая расширяется до встроенного кода. Если же вы не подключаете файл dos.h (или вы выполнили для дан- ной функции директиву #undef), вы будете иметь функцию, а не макрокоманду.
Возвращаемое Функция peek возвращает значение, хранящееся по значение адресу segment:offset.
Переносимость Функция уникальна для семейства микропроцессоров 8086.
Смотрите также
Пример:
#include
#include
#include
int main(void) { int value = 0; printf("Статус клавиатуры:\n"); value = peek(0x0040,0x0017); if(value & 1) printf("Rigth Shift on\n"); else printf("Rigth Shift off\n"); if(value & 2) printf("Left Shift on\n"); else printf("Left Shift off\n"); if(value & 4) printf("Control key on\n"); else printf("Control key off\n"); if(value & 8) printf("Alt key on\n"); else printf("Alt key off\n"); if(value & 16) printf("Scroll lock on\n"); else printf("Scroll lock off\n"); if(value & 32) printf("Num lock on\n"); else printf("Num lock off\n"); if(value & 64) printf("Caps lock on\n"); else printf("Caps lock off\n"); return 0; }

Peekb

peekb
Функция Функция peekb извлекает из памяти байт, записанный по адресу segment:offset.
Синтаксис #include
char peekb( unsigned segment, unsigned offset);
Файл, содержащий dos.h прототип
Описание Функция peekb извлекает из памяти байт, записанный по адресу segment:offset
Если функция вызывается при подключенном файле dos.h, она трактуются, как макрокоманда, которая расширяется до встроенного кода. Если же вы не подключаете файл dos.h (или вы выполнили для дан- ной функции директиву #undef), вы будете иметь функции, а не макрокоманды.
Возвращаемое Функция peekb возвращает значение байта с адресом значение segment:offset.
Переносимость Функция уникальна для семейства микропроцессоров 8086.
Смотрите также
Пример:
#include
#include
#include
int main(void) { int value = 0; printf("Статус клавиатуры:\n"); value = peekb(0x0040,0x0017); if(value & 1) printf("Rigth Shift on\n"); else printf("Rigth Shift off\n"); if(value & 2) printf("Left Shift on\n"); else printf("Left Shift off\n"); if(value & 4) printf("Control key on\n"); else printf("Control key off\n"); if(value & 8) printf("Alt key on\n"); else printf("Alt key off\n"); if(value & 16) printf("Scroll lock on\n"); else printf("Scroll lock off\n"); if(value & 32) printf("Num lock on\n"); else printf("Num lock off\n"); if(value & 64) printf("Caps lock on\n"); else printf("Caps lock off\n"); return 0; }

Perror

perror
Функция Печатает системные сообщения об ошибках.
Синтаксис #include
void perror (const char *s);
Файл, содержащий stdio.h прототип
Описание Функция perror выводит сообщение об ошибке, произшедшей в библиотечной функции, в поток stderr (обычно на консоль).
Сначала выводится аргумент s, затем двоеточие, затем сообщение об ошибке, соответствующее теку- щему значению глобальной переменной errno, и в конце - символ перехода на новую строку. По соглащению в качестве аргумента функции пере- дается имя файла.
Для обеспечения лучшего контроля за форматирова- нием сообщений, массив сообщений об ошибках, со- держится в массиве sys_errlist. Соответственно, переменная errno может быть использована в качес- тве индекса в этом массиве, чтобы корректно выде- лить строку, содержащую сообщение с данным номе- ром. Такая строка - элемент массива - не включает в себя символ перехода на новую строку.
Параметр sys_nerr содержит число элементов масси- ва.
В главе 2 "Переменные" вы найдете подробную ин- формацию о переменных errno, sys_errlist, sys_nerr.
Возвращаемое Нет. значение
Переносимость Функция поддерживаются на системах UNIX и стандар- том ANSI C.
Смотрите также
Пример:
#include
int main(void) { FILE *fp; fp = fopen("perror.dat","r"); if(!fp) perror("Не могу открыть файл для чтения.\n"); return 0; }

Pieslice

pieslice
Функция Рисует и закрашивает сектор круга.
Синтаксис #include
void far pieslice(int x,int y,int stangle, int endangle,int radius);
Файл, содержащий graphics.h прототип
Описание pieslice рисует и закрашивает сектор круга с центром в точке (x,y) и радиусом radius. Сектор рисуется от угла stangle до угла endangle. Сектор вычерчивается текущим цветом и закрашивается те- кущим цветом закраски с помощью текущего шаблона.
Угол для pieslice измеряется в градусах и отсчи- тывается против часовой стрелки, где 0 градусов соответствует 3 часам на циферблате, 90 градусов - 12 часам и т.д.
Замечание. Если вы используете CGA или монохром- ный адаптер, примеры на использование графических функций, приведенные в этой книге, могут не дать ожидаемого результата. Если ваша система работает на CGA или монохромном адаптере, используйте зна- чение 1 вместо символической константы цвета.
Смотрите второй приведенный пример на использова- ние функций pieslice,приведенный в разделе функ- ции arc. (В функции arc приведен только один при- мер, повидимому это опечатка. Прим. пер.)
Возвращаемое Нет. значение
Переносимость Эта функция уникальна для Turbo C++. Она работа- ет только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддер- живающими графический режим.
Смотрите также перечисляемый тип),
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int midx,midy; int stangle = 45,endangle = 135; int radius = 100;
/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx() / 2; midy = getmaxy() / 2; /* определить тип закраски и нарисовать сектор */ setfillstyle(EMPTY_FILL,getmaxcolor()); pieslice(midx,midy,stangle,endangle,radius);
/* очистка */ getch(); closegraph(); return 0; }

Poke

poke
Функция Записывает значение в память по адресу segment:offset.
Синтаксис void poke(unsigned segment, unsigned offset, int value);
Файл, содержащий dos.h прототип
Описание Функция poke записывает целое значение value в память по адресу segment:offset, где segment - адрес сегмента, offset- смещение.
Если функция вызывается при подключенном файле dos.h, она трактуются, как макрокоманда, которая расширяется до встроенного кода. Если же вы не подключаете файл dos.h (или вы выполнили для дан- ной функции директиву #undef), вы будете иметь функцию, а не макрокоманды.
Возвращаемое Нет. значение
Переносимость Функция уникальна для семейства микропроцессоров 8086.
Смотрите также
Пример:
#include
#include
int main(void) { clrscr(); cprintf("Убедитесь, что Scroll lock выключена, и нажмите\ любую клавишу...\n"); getch(); poke(0x0000,0x417,16); cprintf("Теперь Scroll lock включена. \n"); return 0; }

Pokeb

pokeb
Функция Помещает заданный байт в память по адресу segment:offset.
Синтаксис #include
void pokeb(unsigned segment, unsigned offset, char value);
Файл, содержащий dos.h прототип
Описание Функция pokeb записывает значение байта value в память по адресу segment:offset, где segment - адрес сегмента, offset- смещение.
Если функция вызывается при подключенном файле dos.h, она трактуются, как макрокоманда, которая расширяется до встроенного кода. Если же вы не подключаете файл dos.h (или выполните для данной функции директиву #undef), вы будете иметь функ- цию, а не макрокоманду.
Возвращаемое Нет. значение
Переносимость Функция уникальна для семейства микропроцессоров 8086.
Смотрите также
Пример:
#include
#include
int main(void) { clrscr(); cprintf("Убедитесь, что Scroll lock выключена, и нажмите\ любую клавишу...\n"); getch(); pokeb(0x0000,0x417,16); cprintf("Теперь Scroll lock включена. \n"); return 0; }

Polar

polar
Функция Возвращает комплексное число в соответствии с ве- личиной и углом.
Синтаксис #include
complex polar(double mag, double angle);
Файл, содержащий complex.h прототип
Описание polar(mag,angle) аналогично выражению: complex(mag*cos(angle),mag*sin(amgle)).
Возвращаемое Комплексное число, для данного абсолютного значе- значение ния и угла.
Переносимость Комплексные функции требуют С++, и поэтому непере- носимы. Смотрите также
Пример:
#include
#include
int main(void) { double x = 3.1, y = 4.2; complex z = complex(x,y); cout

Poly

poly
Функция Конструирует из заданных аргументов полином.
Синтаксис #include
double poly(double x, int degree, double coeff[]);
Файл, содержащий math.h прототип
Описание Функция poly конструирует полином от x степени degree с коэффициентами coeff[0], coeff[1], ...coeff[n]. Например, если n=4, сконструирован- ный полином будет выглядеть следующим образом:
coeff[4]x^4 + coeff[3]x^3 + coeff[2]x^2 + coeff[1]x + coeff[0]
Возвращаемое Функция poly возвращает вычисленное для данного x значение значение полинома.
Переносимость Функция поддерживается на системах UNIX.
Пример:
#include
#include
/* полином: x**3 - 2*x**2 + 5*x - 1 */
int main(void) { double array[] = {-1.0,5.0,-2.0,1.0}; double result; result = poly(2.0,3,array); printf("Полином x**3-2*x**2+5*x-1 при x=2.0 равен: %lf\n", result); return 0; }

Pow

pow
Функция Вычисляет x в степени y.
Синтаксис Вещественная версия #include
double pow(double x, double y);
Комплексная версия #include
complex pow(complex x,complex y); complex pow(complex x,double y); complex pow(double x,complex y);
Файл, содержащий Вещественная версия Комплексная версия прототип math.h complex.h
Описание pow вычисляет x^y.
Комплексная версия определена следующим образом:
pow(base,expon) = exp(expon log(base))
Возвращаемое При успешном завершении, pow возвращает вычислен- значение ное значение, x^y.
Иногда, аргумент посылаемый pow вызывает в ре- зультате переполнение, или он вообще может быть не вычислимым. При переполнении, pow возвращает значение HUGE_VAL. При слишком большом значении, глобальной переменной errno присваивается значе- ние:
ERANGE - Результат выходит за пределы.
Если аргумент x меньше или равен 0, и y не равен 0, то при этом errno присваивается значение
EDOM - Ошибка области определения.
и функция возвращает значение обратное HUGE_VAL.
Если и x и y равны 0, то pow возвращает 1.
Обработку ошибок функции pow можно изменить с по- мощью функции matherr.
Переносимость Вещественная версия pow доступна в системах UNIX и поддерживантся стандартом ANSI C. Комплексная версия требует С++ и поэтому скорее всего непере- носима.
Смотрите также 0,
Пример:
#include
#include
int main(void) { double x = 4.0,y=3.0; printf("%lf в степени %lf = %1f\n",x,y,pow(x,y)); return 0; }

Возвращаемое При успешном завершении pow10

pow10

Функция Вычисляет 10 в степени p.

Синтаксис #include

double pow10(int p);

Файл, содержащий math.h прототип

Описание pow10 вычисляет 10^p.

Возвращаемое При успешном завершении pow10 возвращает вычислен- значение ное значение 10^p.

Результат вычисляется в виде double. Все аргумен- ты считаются допустимыми, даже, если вызывают пе- реполнение.

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

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

Пример:

#include

#include

int main(void) { int p=3; /* !!! в оригинале double p = 3.0; прим. пер. */ printf("10 в степени %d = %1f\n",p,pow10(p)); return 0; }

Printf

printf
Функция Производит форматированный вывод в stdout.
Синтаксис #include
int printf(const char *format [,argument, ...]);
Файл, содержащий stdio.h прототип
Описание printf получает набор аргументов, применяет к каж- дому соответствующую спецификацию формата из строки format, и выводит форматированные данные в stdout. Число аргументов должно соответствовать числу спецификаций формата в format.
Строка формата.
Строка формата, представленная в каждом вызове функций семейства ...printf, управляет тем, как каждая из функций будет преобразовывать, формати- ровать и печатать свои аргументы. Для формата должно быть достаточно аргументов, иначе резуль- таты могут быть непредвиденными, и, скорее всего, неверными. Лишние аргументы (если их количество больше, чем требуется в формате) будут игнориро- ваться.
Строка формата - это символьная строка, состоящая из двух типов объектов - просто символы и специ- фикации преобразования.
- Простые символы переносятся в вывод без измене- ний.
- Спецификации преобразования применяются для форматирования.
Спецификации формата.
Спецификации формата для функций семейства ... printf имеют следующую форму:
%[флаги] [ширина] [.точность] [F|N|h|l|L] type Каждая спецификация начинается с символа процента (%). После процента следуют признаки в порядке:
- необязательная последовательность [flags] сим- волов-флагов;
- необязательная спецификация [width] ширины;
- необязательная спецификация [.prec] точности;
- необязательный модификатор [F|N|h|l|L] входного размера;
- символ типа преобразования [type].
Необязательные компоненты строки формата.
Далее описаны основные правила управления форма- том, включая необязательные символы, спецификации и модификации для форматной строки.
-----------------T--------------------------------------------------- Символ или ¦ Как они управляют форматом спецификация ¦ -----------------+--------------------------------------------------- flags (флажки) ¦ выравнивание вывода, знак числа, десятичная ¦ точка, хвостовые нули, восьмеричные и десятичные ¦ префиксы. ¦ width (ширина) ¦ максимальное число печатаемых символов, включая ¦ пробелы и нули. ¦ precision ¦ максимальное число печатаемых символов; для целых (точность) ¦ чисел максимальное число цифр. ¦ size (размер) ¦ отвергает размер аргумента по умолчанию ¦ (N- ближний указатель, F- дальний указатель, ¦ h- короткое целое, l- длинное целое, L - long ¦ double). -----------------+---------------------------------------------------

Символы преобразования для семейства функций ...printf.

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

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

--------------T------------T----------------------------------------- Символ ¦ Входной ¦ Выходной аргумент преобразования¦ аргумент ¦ --------------+------------+----------------------------------------- числовые данные --------------T------------T----------------------------------------- d ¦ целое ¦ целое десятичное со знаком i ¦ целое ¦ целое десятичное со знаком o ¦ целое ¦ целое восьмеричное без знака u ¦ целое ¦ целое десятичное без знака x ¦ целое ¦ целое шестнадцатеричное без знака ¦ ¦ (с буквами a, b, c, d, e, f) X ¦ целое ¦ целое шестнадцатеричное без знака ¦ ¦ (с буквами A, B, C, D, E, F). f ¦с плавающей ¦ значение со знаком в форме [-]dddd. ¦ точкой ¦ dddd e ¦с плавающей ¦ значение со знаком в форме [-]d.dddd ¦ точкой ¦ e[+/-]ddd g ¦с плавающей ¦ значение со знаком либо в форме f, либо ¦ точкой ¦ в форме e, с данным значением и точнос- ¦ ¦ тью. Хвостовые нули и десятичная точка ¦ ¦ печатаются только при необходимости E ¦с плавающей ¦ так же, как в случае e, только с буквой ¦ точкой ¦ E для обозначения степени G ¦с плавающей ¦ так же, как в случае g, только с буквой ¦ точкой ¦ E для обозначения степени --------------+------------+----------------------------------------- Символьные данные. --------------T------------T----------------------------------------- C ¦ символьное ¦ один символ S ¦ указатель ¦ печатает символы до тех пор, пока не ¦ на строку ¦ встретится нулевое окончание, либо не ¦ ¦ будет достигнута точность. % ¦ нет символа¦ печатается только знак %. --------------+------------+----------------------------------------- Указатели --------------T------------T----------------------------------------- n ¦ указатель ¦ сохраняется (по адресу, указанному во ¦ на целое ¦ входном аргументе) кол-во только что за- ¦ ¦ писанных символов. P ¦ указатель ¦ печатает входной аргумент,как указатель; ¦ ¦ дальние указатели печатаются, как ¦ ¦ XXXX:YYYY, ближние указатели печатаются, ¦ ¦ как YYYY (только смещение). --------------+------------+-----------------------------------------


Соглашения.

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

------------T-------------------------------------------------------- Символы ¦ Соглашения ------------+-------------------------------------------------------- e или E ¦ аргумент преобразуется в соответствии с шаблоном: ¦ [-]d.ddd...e[+/-]ddd, где ¦ - одна цифра предшествует десятичной точке; ¦ - число цифр после десятичной точки равно точности; ¦ - степень всегда содержит три цифры. f ¦ аргумент преобразуется в десятичную форму в соответст- ¦ вии с шаблоном [-]ddd.ddd..., где число десятичных ¦ цифр после запятой равно точности (если дана ненулевая ¦ точность). g или G ¦ аргумент печатается по принципу e, E или f, с точнос- ¦ тью, обозначающей число значащих цифр. ¦ Хвостовые нули удаляются, десятичная точка ставится ¦ только при необходимости. ¦ аргумент печатается по принципу e или f (с некоторыми ¦ ограничениями), если символ преобразования g; и по ¦ принципу E, если символ преобразования G. ¦ Принцип e используется только в том случае, если экспо- ¦ нента, полученная в результате либо а) больше, чем точ- ¦ ность; б) меньше чем -4. x или X ¦ Для преобразований типа x - в выводе будут буквы a, b, ¦ c, d, e. ¦ Для преобразований типа X - в выводе будут буквы A, B, ¦ C, D, E. ------------+---------------------------------------------------------

Замечание. Неопределенные значения с плавающей точкой печатаются как +INF или -INF. Не числа по IEEE печатаются как +NAN или -NAN.

Символы - флаги.

Символы - флажки это минус(-), плюс(+), диез(#) и пусто( ); Они могут появляться в любом порядке и комбинации.

-----------T--------------------------------------------------------- Флаг ¦ Что это означает -----------+--------------------------------------------------------- - ¦ Левое выравнивание результата, пробелы остаются справа. ¦ Если не задан, результат выравнивается справа, заполня- ¦ ется пробелами или нулями слева. + ¦ Знаковое преобразование - результат всегда начинается со ¦ знака (+) или (-). пусто ¦ Если значение неотрицательно, вывод начинается с пробе- ¦ ла вместо плюса; отрицательные значения всегда начина- ¦ ются со знака минус. # ¦ Специфицирует, что преобразуемый аргумент используется в ¦ "альтернативной" форме. Смотрите следующую таблицу. -----------+---------------------------------------------------------


Примечание. Знак плюс имеет приоритет над пробе- лом в обоих случаях.

Альтернативная форма.

Если флаг # используется вместе с символом преоб- разования, при конвертировании аргумента (arg) это даст следующий результат:

------------------T-------------------------------------------------- Символ ¦ Как # влияет на результат преобразования ¦ ------------------+-------------------------------------------------- c, s, d, i, u ¦ Не оказывает влияния. 0 ¦ 0 предшествует ненулевому arg x или X ¦ 0x (или 0X) предшествует arg e, E или f ¦ Результат всегда будет содержать десятичную точ- ¦ ку, даже если за точкой не следует никаких цифр. ¦ Обычно, десятичная точка появляется в результате, ¦ только если за ней следует цифра. g или G ¦ Аналогично e или E, с дополнением, что хвостовые ¦ нули не удаляются. ------------------+--------------------------------------------------

Спецификация ширины.

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

Ширина задается одним из двух способов:

- непосредственно, с помощью строки десятичных цифр;

- или косвенно с помощью знаков (*).

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

--------------T------------------------------------------------------ Спецификация ¦ Как это влияет на ширину вывода ширины ¦ --------------+------------------------------------------------------ n ¦ Печатаются по крайней мере n символов. Если выводи- ¦ мое значение меньше, чем n символов, вывод заполня- ¦ ется пробелами (выравнивание справа, если задан флаг ¦ "-", в противном случае - левое выравнивание). 0n ¦ Печатается по крайней мере n символов. Если выводное ¦ значение содержит менее n символов, оно заполняется ¦ слева нулями. * ¦ Спецификация ширины ставится в списке аргументов ¦ перед соответствующим аргументом. --------------+------------------------------------------------------


Спецификация точности.

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

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

---------------T----------------------------------------------------- Спецификация ¦ Как это влияет на вывод точности ¦ ---------------+----------------------------------------------------- (не дана) ¦ Точность устанавливается по умолчанию (стандартно ¦ =1 для типов d, i, o, u, x, X; ¦ =6 для типов e, E, f; ¦ = все значащие цифры для типов g, G; ¦ = печать первого нулевого символа для типа S; ¦ не влияет на тип c) .0 ¦ Для типов d, i, o, u, x точность устанавливается по ¦ умолчанию. ¦ Для типов e, E, f десятичная точка не печатается. .n ¦ Печатаются n символов или n десятичных знаков; если ¦ выводимое значение содержит больше n символов, оно ¦ может быть усечено или округлено. (Случится это или ¦ нет, зависит от символьного типа). * ¦ Спецификация точности задается в списке аргументов, ¦ причем она предшествует значению форматируемого ар- ¦ гумента. ---------------+-----------------------------------------------------

Замечание. Если указана нулевая точность, и спецификатор формата для целого значения (т.е. d, i, o, u, x), и печатаемое значение равно 0, то в этом случае не будут выводится цифровые символы, т.е. поле бу- дет пустое.

---------------T----------------------------------------------------- Символ ¦ Как спецификация точности влияет на преобразование преобразования ¦ ---------------+----------------------------------------------------- d ¦ .n показывает, что будет напечатано по крайней мере i ¦ n цифр. Если выводимый аргумент имеет менее n цифр, o ¦ свободные места в выводе забиваются слева нулями. u ¦ Если же выводимый аргумент имеет больше n цифр, вы- x ¦ ходное значение не усекается. X ¦ ¦ e ¦ .n показывает, что после десятичной точки будет на- E ¦ печатано n символов, причем последняя цифра округ- f ¦ ляется. ¦ g ¦ .n определяет, что будет напечатано максимально n ¦ значащих цифр. G ¦ ¦ c ¦ .n не имеет влияния на вывод ¦ s ¦ .n определяет, что будет напечатано не больше, чем ¦ n символов. ---------------+-----------------------------------------------------


Модификатор входного размера.

Символ - модификатор входного размера (F, N, h, l или L) дает размер последующего входного аргумен- та:

F = дальний указатель; N = ближний указатель; h = короткое целое; l = длинное целое; L = длинное двойной точности;

Модификаторы входного размера (F, N, h, l и L) влияют на то, каким образом функции ...printf ин- терпретируют тип данных соответствующего входного аргумента arg. Модификаторы F и N применяются только к тем входным аргументам arg, которые представляют собой указатели (%p, %s и %n). Моди- фикаторы h, l и L применяются к числовым аргумен- там (целые и с плавающей точкой).

Оба модификатора F и N интерпретируют входной ар- гумент arg. Обычно, для преобразований %p, %s, или %n аргумент arg - это указатель стандартного размера для соответствующей модели памяти. F оз- начает: "интерпретировать arg, как дальний указа- тель". N означает: "интепретировать arg, как ближний указатель".

Модификаторы h, l и L отвергают стандартный раз- мер числовых данных входных аргументов: l и L применяется к целым типам данных (d, i, o, u, x, X) и типам данных с плавающей точкой (e, E, f, g и G), в то время как h применяется только к целым данным. Ни h, ни l- модификаторы не оказывают ни- какого влияния на типы символов(c,s) или указате- лей(p,n).

------------------T-------------------------------------------------- Модификаторы ¦ Как интерпретируется аргумент входного размера ¦ ------------------+-------------------------------------------------- F ¦ аргумент arg читается, как дальний указатель. N ¦ аргумент arg читается, как ближний указатель. ¦ в сверх-больших моделях памяти N не может ис- ¦ пользоваться ни с каким типом преобразований. h ¦ для типов преобразований d, i, o, u, x, X аргумент ¦ arg интерпретируется, как короткое целое; l ¦ для типов преобразований d, i, o, u, x, X аргумент ¦ интерпретируется, как длинное целое; ¦ для типов преобразований e, E, f, g, G аргумент ин- ¦ терпретируется как число двойной точности. L ¦ интерпретирует arg как длинное с двойной точ- ¦ ность для типов преобразований e, E, f, g, G. ------------------+--------------------------------------------------

Возвращаемое Каждая функция возвращает количество выводимых значение байт. В случае ошибки printf возвращает EOF.

Переносимость printf поддерживается на системах UNIX и определена в стандарте Кернигана и Ритчи. Поддерживается стандартом ANSI C.

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

Пример:

#define I 555 #define R 5.5

int main(void) { int i, j, k, l; char buf[7]; char *prefix = &buf; char tp[20]; printf("prefix 6d 6o 8x 10.2e 10.2f\n"); strcpy(prefix, "%"); for (i=0; i

Putc

putc
Функция Выводит символ в поток.
Синтаксис #include
int putc(int c, FILE *stream);
Файл, содержащий stdio.h прототип
Описание Функция putc представляет собой макрокоманду, ко- торая выводит символ c в указанный выходной поток stream.
Возвращаемое При успешном завершении функция putc, возвращают значение символ c. При возникновении ошибки функция возвращают значение EOF.
Переносимость Функция поддерживается в системах UNIX и стандар- том ANSI C. Функция putc определены в стандарте Кернигана и Ритчи.
Смотрите также
Пример:
#include
int main(void) { char msg[] = "Hello world"; int i=0; while(msg[i]) putc(msg[i++],stdout); return 0; }

Putch

putch
Функция Выводит символ на экран.
Синтаксис #include
int putch(int c);
Файл, содержащий conio.h прототип
Описание putch выводит символ c в текущее текстовое окно. Эта функция производит вывод в текстовом режиме непосредственно на консоль. putch не преобразует символ перевода строки (\n) в пару: перевод строки, возврат каретки.
Вывод осуществляется либо прямо в видеопамять, либо с помощью функций BIOS, в зависимости от значения глобальной переменной directvideo.
Возвращаемое При успешном завершении putch возвращает выведен- значение ный символ c. При ошибке он возвращает EOF.
Переносимость putch работает только на компьютерах совместимых с IBM PC.
Смотрите также
Пример:
#include
#include
int main(void) { char ch = 0; printf("Введите строку:"); while(ch != '\r') { ch = getch(); putch(ch); } return 0; }

Putchar

putchar
Функция Выводит символ в поток stdout.
Синтаксис #include
int putchar(int c);
Файл, содержащий stdio.h прототип
Описание putchar это макрокоманда, определенная как putc(ch,stdout);
Возвращаемое При успешном завершении putchar возвращает выведен- значение ный символ c. При ошибке он возвращает EOF.
Переносимость putchar доступна в системах UNIX и поддерживается стандартом ANSI C. Определена также у Кернигана и Ричи.
Смотрите также
Пример:
#include
/* определение некоторых символов, предназначенных для рисования рамок */ #define LEFT_TOP 0xDA #define RIGHT_TOP 0xBF #define HORIZ 0xC4 #define VERT 0xB3 #define LEFT_BOT 0xC0 #define RIGHT_BOT 0xD9
int main(void) { char i,j; /* нарисовать верхнюю часть рамки */ putch(LEFT_TOP); for(i=0;i

Putenv

putenv
Функция Добавляет строку символов в текущее описание среды.
Синтаксис #include
int putenv(const char *name);
Файл, содержащий stdlib.h прототип
Описание putenv получает строку name и добавляет ее к опи- санию среды текущего процесса. Например:
putenv("PATH=C:\\TC");
putenv можно также использовать для модификации или удаления уже существующих переменных среды текущего процесса. Для удаления надо просто доба- вить пустую переменную (к примеру "MYVAR=").
putenv изменяет среду только текущего процесса. При завершении процесса восстанавливается исход- ная среда.
Замечание. Строка, передоваемая putenv должна быть глобальной или статической. В случае, если строка была локальной или динамической, то осво- бождение памяти приведет к непредсказуемому ре- зультату.
Возвращаемое При успешном завершении putenv возвращает 0, при значение ошибке -1.
Переносимость putenv доступна в системах UNIX.
Смотрите также
Пример:
#include
#include
#include
#include
#include
int main(void) { char *path, *ptr; int i=0; /* получить значение переменной среды PATH */ ptr = getenv("PATH"); /* создать новое значение */ path = malloc(strlen(ptr)+15); strcpy(path,"PATH="); strcat(path,ptr); strcat(path,";c:\\temp"); /* занести его в переменную */ putenv(path); while(environ[i]) printf("%s\n",environ[i++]); return 0; }

Putimage

putimage
Функция Выводит на экран битовый образ.
Синтаксис #include
void far putimage(int left,int top, void far *bitmap,int op);
Файл, содержащий graphics.h прототип
Описание putimage помещает битовый образ, ранее со- храненный с помощью getimage, обратно на экран, где левый верхний угол образа находится в точке (left,top). bitmap указывает область памяти в ко- тором хранится требуемый образ.
Параметр op определяет составной оператор, кото- рый определяет вычисление цвета для каждой точ- ки (pixel) экрана, основываясь на существующей уже на экране точке и соответствующей точке обра- за в памяти.
Перечень значений putimage_op (как определено в graphics.h) дает названия следующим операциям:
------------------------------------------- ИМЯ ЗНАЧ. ОПИСАНИЕ ------------------------------------------- COPY_PUT 0 копия XOR_PUT 1 исключающее "или" OR_PUT 2 "или" AND_PUT 3 " и " NOT_PUT 4 копия источника с инверсией -------------------------------------------
Другими словами, COPY_PUT скопирует побитный об- раз источника на экран, XOR_PUT выполнит операцию ИСКЛЮЧАЮЩЕЕ ИЛИ над уже находящемся на экране об- разом, OR_PUT выполнит операцию ИЛИ над уже нахо- дящемся на экране образом и т.д.
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
#define ARROW_SIZE 10
void draw_arrow(int x,int y);
int main(void) { int graphdriver = DETECT, gmode, errorcode; void *arrow; int x,y,maxx; unsigned int size;
/* инициализация драйвера и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } maxx = getmaxx(); x = 0; y = getmaxy()/2; /* нарисовать перемещаемый объект */ draw_arrow(x,y); /* определить размер памяти, для хранения изображения */ size = imagesize(x,y-ARROW_SIZE,x+(4*ARROW_SIZE),y+ARROW_SIZE); /* выделить память */ arrow = malloc(size); /* взять изображение */ getimage(x,y-ARROW_SIZE,x+(4*ARROW_SIZE),y+ARROW_SIZE,arrow); /* продолжать, пока не будет нажата клавиша */ while(!kbhit()) { /* стереть старый образ */ putimage(x,y-ARROW_SIZE,arrow,XOR_PUT); x += ARROW_SIZE; if(x >= maxx) x = 0; /* нарисовать изображение */ putimage(x,y-ARROW_SIZE,arrow,XOR_PUT); }
free(arrow); closegraph(); return 0; }
void draw_arrow(int x,int y) { /* нарисовать на экране стрелку */ moveto(x,y); linerel(4*ARROW_SIZE,0); linerel(-2*ARROW_SIZE,-1*ARROW_SIZE); linerel(0,2*ARROW_SIZE); linerel(2*ARROW_SIZE,-1*ARROW_SIZE); }

Putpixel

putpixel
Функция выводит пиксель в заданную точку экрана.
Синтаксис #include
void far putpixel(int x, int y,int color);
Файл, содержащий graphics.h прототип
Описание putpixel отображает точку цвета color и с координатами (x,y).
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
#include
#define PIXEL_COUNT 1000 #define DELAY_TIME 100 /* в миллисекундах */
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int x,y,i,color,maxx,maxy,maxcolor,seed;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } maxx = getmaxx(); maxy = getmaxy(); maxcolor = getmaxcolor()+1; while(!kbhit()) { /* сбросить генератор случайных чисел */ seed = random(32767); srand(seed); for(i=0;i

Puts

puts
Функция Выводит строку в поток stdout.
Синтаксис #include
int puts(const char *s);
Файл, содержащий stdio.h прототип
Описание Функция puts копирует строку символов с нулевым окончанием в стандартный выходной поток stdout, причем добавляет в конец символ перехода на новую строку.
Возвращаемое При успешном завершении, функция puts ненулевое значение значение. В противном случае возвращается EOF.
Переносимость Данная функция поддерживается на системах UNIX и стандартом ANSI C.
Смотрите также

Puttext

puttext
Функция Копирует текст из памяти на экран, в текстовом ре- жиме.
Синтаксис #include
int puttext(int left, int top, int right, int bottom, void *source);
Фйал, содержащий conio.h прототип
Описание puttext помещает содержимое области памяти, адре- суемой параметром source, в прямоугольник на эк- ране, определяемый параметрами left, top, right, bottom.
Все координаты являются абсолютными координатами экрана, а не текстового окна. Левый верхний угол экрана имеет координаты (1,1).
puttext размещает на экране содержимое памяти последовательно, слева на право и сверху вниз.
puttext работает в текстовом режиме и производит непосредственный вывод на экран.
Возвращаемое При успешном завершении puttext возвращает ненуле- значение вое значение. При ошибке (к примеру, если указан- ные координаты лежат вне пределов экрана для дан- ного режима) puttext возвращает 0.
Переносимость puttext работает только на компьютерах, имеющих совместимую с IBM PC BIOS.
Смотрите также

Putw

putw
Функция Помещает в поток целое значение.
Синтаксис #include
int putw(int w, FILE *stream);
Файл, содержащий stdio.h прототип
Описание putw выводит целое в указанный поток. Данная функ- ция не вызывает и не ожидает никакого специально- го выравнивания в файле.
Возвращаемое При успешном завершении putw возвращает выведенное значение целое w. При ошибке возвращает EOF.
Т.к. EOF является допустимым целым значением, то для определения ошибки нужно воспользоваться фун- кцией ferror.
Переносимость функция поддерживается в системах UNIX.
Смотрите также
Пример:
#include
#include
#define FNAME "test.$$$"
int main(void) { FILE *fp; int word; /* записать в файл слово */ fp = open(FNAME,"wb"); if(fp==NULL) { printf("Ошибка при открытии файла\n"); exit(1); } word = 94; putw(word,fp); if(ferror(fp)) printf("Ошибка, при записи в файл\n"); else printf("Успешная запись в файл\n"); fclose(fp); /* повторное открытие файла */ fp = fopen(FNAME,"rb"); if(fp==NULL) { printf("Ошибка при открытии файла%s\n",FNAME); exit(1); } word = getw(fp); if(ferror(fp)) printf("Ошибка, при чтении из файла\n"); else printf("Успешное чтение в файле, word = %d\n",word); fclose(fp); unlink(FNAME); return 0; }

Qsort

qsort
Функция Сортирует данные, применяя быстрый алгоритм сортировки.
Синтаксис #include
void qsort(void *base, size_t nelem, size_t width, int(*fcmp)(const void *, const void *));
Файл, содержащий stdlib.h прототип
Описание Функция qsort применяет алгоритм быстрой сорти- ровки "средний из трех". Функция qsort сортирует содержимое таблицы постоянно вызывая функцию сравнения, определяемой пользователем и адресуе- мой с помощью указателя fcmp.
- base адресует базу (нулевой элемент) сортируе- мой таблицы.
- nelem - число элементов таблицы;
- width - размер каждого элемента таблицы в бай- тах.
Функция *fcmp - функция сравнения - получает два аргумента elem1 и elem2, которые представляют со- бой два указателя на 2 элемента таблицы. Функция сравнения *fcmp сравнивает между собой два адре- суемых элемента таблицы (*elem1 и *elem2) и возв- ращает в зависимости от результата сравнения це- лое число.
Если элементы: *fcmp возвращает: -------------------------------------------------- *elem1elem2 целое >0 --------------------------------------------------
При сравнении символ "меньше, чем" () означает, что в конце сор- тировки левый элемент должен оказаться после пра- вого.
Возвращаемое Нет. значение
Переносимость Функция поддерживается на системах UNIX и стандар- том ANSI C.
Смотрите также
Пример:
#include
#include
#include
int sort_function(const void *a,const void *b);
char list[5][4] = {"cat", "car", "cab", "cap", "can"};
int main(void) { int x; qsort((void *)&list, 5, sizeof(list[0]), sort_function); for(x=0; x

Описание функций Си

Raise

raise
Функция Посылает программный сигнал выполняемой программе.
Синтаксис #include
int raise(int sig);
Файл, содержащий signal.h прототип
Описание raise посылает сигнал sig программе. Если програм- ма загрузила процедуру обработки сигнала, для сигнала sig, то запускается данная процедура. Ес- ли процедуры обработки для данного сигнала нет, то производятся действия, определенные для данно- го сигнала по умолчанию.
Имеются следующие типы сигналов, определенные в файле signal.h:
-------------------------------------------------- Сигнал Значение -------------------------------------------------- SIGABRT Ненормальное завершение (*) SIGFPE Неверная операция над числами с плавающей точкой SIGILL Неверная инструкция (#) SIGINT Прерывание по Ctrl_Break. SIGSEGV Неверный доступ к памяти (#) SIGTERM Запрос на завершение программы (*) --------------------------------------------------
Сигналы помеченные (*) не генерируются DOS или Turbo C++, во время нормальной работы. Однако они могут генерироваться с помощью функции raise. Сигналя помеченные (#) не могут генерироваться асинхронно процессорами 8088 или 8086, однако мо- гут генерироваться некоторыми другими процессора- ми (смотри signal).
Возвращаемое При успешном завершении raise возвращает 0, в про- значение тивном случае ненулевое значение.
Переносимость raise поддерживается системами UNIX и стандартом ANSI C.
Смотрите также
Пример:
#include
int main() { int a,b;
a = 10; b = 0; if(b==0)
/* предварить ошибку при делении на 0 */ raise(SIGFPE); a = a / b; return 0; }

Rand

rand
Функция Генератор случайных чисел.
Синтаксис #include
int rand(void);
Файл, содержащий stdlib.h прототип
Описание Функция rand использует мультипликативный конгру- энтный генератор случайных чисел с периодом 2^32, чтобы получать псевдослучайные числа в диапазоне от 0 до RAND_MAX. Символическая константа RAND_MAX определена в stdlib.h; ее значение 2^15ё1.
Переносимость Функция поддерживаются на системах UNIX и стандар- том ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { int i; printf("10 случайных чисел от 0 до 99 \n\n"); for (i=0; i

Randbrd

randbrd
Функция Чтение с диска.
Синтаксис #include
int randbrd(struct fcb *fcbptr, int recent);
Файл, содержащий dos.h прототип
Описание Функция randbrd считывает количество записей recent, используя блок FCB, адресуемый указателем fcbptr. Записи считываются в память по текущему адресу DTA. Записи считываются с диска, причем информация берется из поля random record блока FCB. Эта операция выполняется с помощью системно- го вызова DOS 0x27.
Действительное число считанных записей можно оп- ределить проанализировав поля random record блока FCB. Данное поле после операции будет заполнено информацией о числе действительно считанных запи- сей.
Возвращаемое В зависимости от результата работы функций randbrd значение возвращает следующие значения:
0- все записи прочитаны;
1- достигнут конец файла (EOF) и последняя запись прочитана полностью;
2- считанные записи будут располагаться рядом с адресом 0xFFFF (прочитано записей столько, сколько возможно).
3- достигунт конец файла и последняя запись обра- ботана не полностью.
Переносимость Функция уникальна для DOS.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { char far *save_dta; char line[80],buffer[256]; struct fcb blk; int i,result; /* ввести имя файла */ printf("Введите устройство и имя файла (без маршрута, например\ a:file.dat)\n"); gets(line); /* записать имя файла в FCB */ if(!parsfnm(line,&blk,1)) { printf("Ошибка при вызове parsfnm\n"); exit(1); } printf("Устройство #%d файл: %s\n\n",blk.fcb_drive, blk.fcb_name); /* открыть файл, с использованием функций DOS, работающих с FCB */ bdosptr(0x0f,&blk,0); /* сохранить старый DTA, создать новый */ save_dta = getdta(); setdta(buffer); /* передать в FCB информацию об DTA */ blk.fcb_recsize = 128; blk.fcb_random = 0L; result = randbrd(&blk,1); /* проверить результат операции */ if(!result) printf("Чтение закончено успешно\n"); else { perror("Ошибка, во время чтения \n"); exit(1); } /* считать данные из новой DTA */ printf("Первые 128 символов:\n); for(i=0; i

Randbwr

randbwr
Функция Запись на диск.
Синтаксис #include
int randbwr(struct fcb *fcbptr, int reccnt);
Файл, содержащий dos.h прототип
Описание Функция randbwd записывает recent записей, исполь- зуя блок FCB, адресуемый указателем fcbptr. Эта операция выполняется с помощью системного вызова DOS 0x28.
Действительное число записанных записей можно оп- ределить проанализировав поля random record блока FCB. Данное поле после операции будет заполнено информацией о числе действительно записанных за- писей.
Возвращаемое В зависимости от результата работы функций randbwd значение возвращает следующие значения:
0- все записи записаны; 1- На диске нет места для записи данных. (Не за- писано ни одной записи.) 2- выводимые записи располагаются рядом с адресом 0xFFFF (выведено записей столько, сколько воз- можно).
Переносимость Функция уникальна для DOS.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { char far *save_dta; char line[80]; char buffer[256] = "RANDBWR test!"; struct fcb blk; int result; /* ввести имя файла */ printf("Введите имя нового файла (без маршрута, например\ a:file.dat)\n"); gets(line); /* записать имя файла в FCB */ if(!parsfnm(line,&blk,1)) printf("Устройство #%d файл: %s\n\n",blk.fcb_drive, blk.fcb_name); /* создать файл, с использованием функций DOS, работающих с FCB */ if(bdosptr(0x16,&blk,0)==-1) { printf("Ошибка при создании файла\n"); exit(1); } /* сохранить старый DTA, создать новый */ save_dta = getdta(); setdta(buffer); /* вывод в файл */ blk.fcb_recsize = 256; blk.fcb_random = 0L; result = randbwd(&blk,1); /* проверить результат операции */ if(!result) printf("Запись закончена успешно\n"); else { perror("Ошибка диска\n"); exit(1); } /* закрыть файл */ if(bdosptr(0x10,&blk,0)==-1) { printf("Ошибка при закрытии файла\n"); exit(1); } /* восстановить DTA */ setdta(save_dta); return 0; }

Random

random
Функция Генератор случайных чисел.
Синтаксис #include
int random(int num);
Файл, содержащий stdlib.h прототип
Описание Функция random возвращает случайное число в диапазоне от 0 до num-1. random(num) это макро, определенное в виде (rand()%num). И num и возвра- щаемое значение целые.
Возвращаемое random возвращает случайное число в диапазоне от значение 0 до num-1.
Переносимость Соответствующая функция существует в Turbo Pascal.
Смотрите также
Пример:
#include
#include
#include
int main(void) { randomize(); printf("Случайное число в диапазоне от 0 до 99:", random(100)); return 0; }

Randomiz

randomize
Функция Инициализация генератора случайных чисел.
Синтаксис #include
#include
void randomize(void);
Файл, содержащий stdlib.h прототип
Описание Функция randomize инициализирует генератор случай- ных чисел некоторым случайным числом. Т.к. randomize это макро, которое использует вызов функции time, то мы рекомендуем включить также файл time.h при использовании этой функции.
Возвращаемое Нет. значение
Переносимость Соответствующая функция существует в Turbo Pascal.
Смотрите также
Пример:
#include
#include
int main(void) { int i; randomize(); printf("10 случайных чисел от 0 до 99 \n\n"); for (i=0; i

Read

read
Функция Считывает данные из файла.
Синтаксис #include
int read(int handle, void *buf, unsigned len);
Файл, содержащий io.h прототип
Описание Функция read делает попытку считать len байт из файла, связанного с handle, в буфер, адресуемый параметром buf.
В файле, открытом в текстовом режиме, функция read удаляет символы "возврат каретки" и выдает "конец файла" (EOF), при получении символа Ctrl-Z.
Параметр handle - это тот же самый параметр, что получают на выходе функций creat, open, dup, dup2.
Функция начинает чтение дисковых файлов с текуще- го положения указателя файла. Когда чтение завер- шено, данная функция увеличивает указатель файла на число считанных байт. При работе функции с ус- тройствами, байты данных считываются непосредст- венно с устройства.
Максимально, read может ввести 65534 байта, т.к. 65535 это -1, индикатор ошибки.
Возвращаемое При успешном завершении возвращается положительное значение целое число, являющееся числом байт, помещенных в буфер; причем, если файл открывается в тексто- вом режиме, функция read не включает символы "возврата каретки" и символы Ctrl-z в число счи- танных байтов. По концу файла (EOF), функция воз- вращает нуль.
При ошибке функция возвращает значение -1, и гло- бальной переменной errno присваивается одно из следующих значений:
EACCES - Отказ доступа; EBADF - Неверный номер файла.
Переносимость Функция read поддерживается на системах UNIX.
Смотрите также
Пример:
#include
#include
#include
#include
#include
#include
int main(buffer) { void *buf; int handle,bytes; buf = malloc(10); /* Поиск в текущей директории файла с именем TEST.$$$ и попытка чтения из него 10 байт. Перед запуском этой программы необходимо создать файл TEST.$$$ */ if((handle = open("TEST.$$$",O_RDONLY|O_BINARY))== -1) { printf("Ошибка при открытии файла.\n"); exit(1); } if((bytes = read(handle,buf,10))==-1) { printf("Ошибка чтения.\n"); exit(1); } printf("Считано %d байт.\n",bytes); return 0; }

Real

real
Функция Возвращает вещественную часть комплексного числа, или преобразует число из двоично-десятичного ко- дирования обратно в float, double или long double.
Синтаксис Определенное в complex: Определенное в bcd: #include #include
double real(complex x); double real(bcd x);
Файл, содержащий complex.h bcd.h прототип
Описание Комплексное число состоит из мнимой и веществен- ной части. real возвращает вещественную часть.
Кроме этого, вы можете использовать real для пре- образования числа в двоично-десятичном кодирова- нии в число типа float, double или long double.
Возвращаемое Вещественная часть комплексного числа. значение
Переносимость Комплексные функции требуют C++ и поэтому непере- носимы.
Смотрите также
Пример 1:
#include
#include
int main(void) { double x=3.1,y=4.2; complex z = complex(x,y); cout
#include
int main(void) { bcd x = 3.1; cout

Realloc

realloc
Функция Перераспределяет память.
Синтаксис #include
void * realloc(void *block, size_t size);
Файл, содержащий stdlib.h и alloc.h прототип
Описание realloc пытается сжать или увеличить предваритель- выделенный блок до размера в size байт. Аргумент block указывает на блок памяти, полученный при вызове функций malloc, calloc или realloc. Если block является нулевым указателем, realloc рабо- тает также как и malloc.
realloc изменяет размер выделенного блока памяти и при необходимости копирует его содержимое в но- вый блок.
Возвращаемое realloc возвращает адрес блока, который может от- значение личаться от исходного. Если блок не может быть выделен или size равно 0, то realloc возвращает NULL.
Переносимость realloc доступна в системах UNIX и поддерживается стандартом ANSI C.
Смотрите также
Пример:
#include
#include
#include
int main(void) { char *str; /* выделить память под строку */ str = malloc(10); /* скопировать в строку "Hello" */ strcpy(str,"Hello"); /* вывести строку */ printf("Строка: %s\n, Адрес: %p\n",str,str); str = realloc(str,20); printf("Строка: %s\n, Новый адрес: %p\n",str,str); /* освободить память */ free(str); return 0; }

Rectangl

rectangle
Функция Рисует прямоугольник.
Синтаксис #include
void far rectangle( int left, int top, int right, int bottom );
Файл, содержащий graphics.h прототип
Описание rectangle рисует прямоугольник линией те- кущего вида, толщины и цвета.
(left, top)-координаты левого верхнего угла пря- моугольника, а (right, bottom)-его правый нижний угол.
Возвращаемое Нет. значение
Переносимость Эта функция уникальна для Turbo C++. Она работа- ет только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддер- живающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int left,top,right,bottom;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } left = getmaxx() / 2 - 50; top = getmaxy() / 2 - 50; right = getmaxx() / 2 + 50; bottom = getmaxy() / 2 + 50; /* рисует прямоугольник */ rectangle(left,top,right,bottom); /* очистка */ getch(); closegraph(); return 0; }

Register

registerbgifont
Функция Регистрирует встроенный код штриховых символов.
Синтаксис #include
int registerbgifont(void(*font)(void));
Файл, содержащий graphics.h прототип
Описание Вызов registerbgifont информирует графи- ческую систему о том, что шрифт font был включен во время компоновки. Эта программа проверяет свя- занный код для указанного шрифта. Если код пра- вильный, то она регистрирует код во встроенной таблице. Встроенные шрифты описываются подробно в разделе BGIOBJ файла UTIL.DOC.
Используя имя встроенного шрифта в вызове registerbgifont, вы просите компилятор (и редак- тор связей (linker)) встроить объектный файл с открытым именем. Если вы регистрируете шрифт загруженный пользова- телем, вы обязаны передать результат выполнения registerbgifont в initgraph в виде номера шрифта, который будет использоваться.
Возвращаемое registerbgifont возвращает отрицательный значение код графической ошибки, если указанный шрифт являются неверными. В противном случае registerbgifont возвращает номер зарегистрирован- ного шрифта.
Переносимость Эта функция уникальна для Turbo C++. Она работа- ет только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддер- живающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int midx,midy;
/* зарегистрировать шрифт, добавленный в graphics.lib */ errorcode = registerbgifont(triplex_font); if(errorcode < 0) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ }
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx()/2; midy = getmaxy()/2; /* выбрать шрифт */ settextstyle(TRIPLEX_FONT,HORIZ_DIR,4); /* вывести текст */ settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(midx,midy, "The TRIPLEX FONT");
/* очистка */ getch(); closegraph(); return 0; }

Remove

remove
Функция Удаляет файл.
Синтаксис #include
int remove(const char *filename);
Файл, содержащий stdio.h прототип
Описание remove удаляет файл, имя которого определяется па- раметром filename. Это макрокоманда, которая просто транслируется в вызов unlink. Если файл был открыт не забудьте его предварительно зак- рыть.
Замечание. Строка с именем файла может включать его полный маршрут.
Возвращаемое При успешном завершении remove возвращает 0. При значение ошибке возвращает -1 и присваивает глобальной пе- ременной errno одно из следующих значений:
ENOENT - Такого файла или директории нет; EACCES - Доступ запрещен.
Переносимость remove доступна в системах UNIX и поддерживается стандартом ANSI C.
Смотрите также
Пример: #include
int main(void) { char file[80]; /* запросить имя удаляемого файла */ printf("Введите имя удаляемого файла */ gets(file); /* удалить файл */ if(remove(file)==0) printf("Файл %s удален.\n"); else perror("remove"); return 0; }

Rename

rename
Функция Переименовывает файл.
Синтаксис #include
int rename(const char *oldname, const char *newname);
Файл, содержащий stdio.h прототип
Описание Функция rename изменяет имя файла с oldname на newname. Если спецификация дисковода включена в имя newname, то она должна быть той же, что и в oldname.
Директории в маршруте (path) не обязательно долж- ны быть теми же самыми, поэтому функцию rename можно использовать для пересылки файла из одной директории в другую. Применять шаблоны не разре- шается.
Возвращаемое При успешном переименовании файла функция rename значение возвращает 0. В случае ошибки, возвращается -1, а глобальная переменная errno получает одно из сле- дующих значений:
ENDENT - Маршрут или имя файла не найдены; EACCES - Отказ доступа; ENOTSAM- Не то же самое устройство.
Переносимость rename поддерживается стандартом ANSI C.
Пример:
#include
int main(void) { char oldname[80],newname[80]; /* запросить имя переименовываемого файла, и новое имя */ printf("Имя переименовываемого файла:"); gets(oldname); promtf("Новое имя:"); gets(newname); if(rename(oldname,newname)==0) printf("Файл переименован с %s в %s\n",oldname,newname); else perror("rename"); return 0; }

Restorec

restorecrtmode
Функция Восстанавливает видео-режим, к исходному, который был перед вызовом initgraph.
Синтаксис #include
void far restorecrtmode(void);
Файл, содержащий graphics.h прототип
Описание restorecrtmode восстанавливает исходный видео ре- жим, который был определен вызовом initgraph.
Эта функция может использоваться совместно с setgraphmode для переключения между текстовым и графическим режимами. Функция textmode не должна использоваться для этих целей;она используется только если экран нужно перевести из одного текс- тового режима в другой текстовый режим.
Возвращаемое Нет. значение
Переносимость Эта функция уникальна для Turbo C++. Она работа- ет только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддер- живающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int x,y;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } x = getmaxx()/2; y = getmaxy()/2; /* вывести текст */ settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(midx,midy, "Press any key to exit graphics"); getch(); /* перевести систему в текстовый режим */ restorecrtmode(); printf("Мы теперь в текстовом режиме.\n"); printf("Для возврата в графический режим нажмите любую клавишу.\n"); getch(); /* восстановить графический режим */ setgraphmode(getgraphmode()); /* вывести текст */ settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(midx,midy, "We're now back in graphics mode"); outtextxy(midx,midy+textheight("W"),"Press any key to halt:");
/* очистка */ getch(); closegraph(); return 0; }

Rewind

rewind
Функция Устанавливает указатель в начало потока.
Синтаксис #include
int rewind(FILE *stream);
Файл, содержащий stdio.h прототип
Описание rewind(stream) эквивалентно fseek(stream, 0L, SEEK_SET), за исключением того, что rewind обну- ляет признаки конца файла и ошибки, в то время, как fseek обнуляет только признак конца файла.
Возвращаемое Нет. значение
Переносимость rewind доступна во всех системах UNIX и поддержи- вается стандартом ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { FILE *fp; char *fname = "TXXXXXX",*newname,first; newname = mktemp(fname); fp = fopen(newname,"w+"); fprintf(fp,"abcdefghijklmnopqrstuvwxyz"); rewind(fp); fscanf(fp,%c,&first); printf("Первый символ: %c",first); fclose(fp); remove(nemname); return 0; }

Rmdir

rmdir
Функция Удаляет директорию.
Синтаксис #include
int rmdir(const char *path);
Файл, содержащий dir.h прототип
Описание rmdir удаляет директорию, маршрут которой указан в path. Директория в path:
- должна быть полной;
- не должна быть текущей рабочей директорией;
- не должна быть корневой директорией.
Возвращаемое rmdir возвращает 0, если директория была успешно значение удалена. При ошибке возвращает -1 и присваивает глобальной переменной errno одно из следующих значений:
EACCES - Доступ запрещен; ENOENT - Маршрут или файл не найден.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { int stat; stat = mkdir("DIRNAME"); if(!stat) printf("Директория создана\n"); else { printf("Не могу создать директорию\n"); exit(1); } getch(); system("dir /p"); getch(); stat = rmdir(DIRNAME); if(!stat) printf("Директория удалена\n"); else { perror("\nНе могу удалить директорию\n"); exit(1); } return 0; }

Rotr

rotr
Функция Циклический сдвиг вправо целого без знака.
Синтаксис #include
unsigned _rotr(unsigned value, int count);
Файл, содержащий stdlib.h прототип
Описание _rotr производит циклический сдвиг значения value вправо на count разрядов. value рассматривается как целое без знака.
Возвращаемое _rotr возвращает value сдвинутое циклически на значение count разрядов.
Смотрите также
Пример:
#include
#include
int main(void) { unsigned value,result; value = 32767; result = _rotr(value,1); printf("Значение %u сдвинутое на один разряд вправо = %u", value,result); return 0; }

Описание функций Си

Sbrk

sbrk
Функция Изменяет размещение сегмента данных в памяти.
Синтаксис #include
char *sbrk(int incr);
Файл, содержащий alloc.h прототип
Описание Функция sbrk добавляет к завершающему значению incr байт, и соответственно выделяет память. incr может быть и отрицательным, в этом случае объем выделенной памяти уменьшается.
В случае если для выделения памяти недостаточно свободного места, sbrk завершается по ошибке и не производит никаких действий.
Возвращаемое При успешном завершении sbrk возвращает старое значение значение. При ошибке, sbrk возвращает -1 и гло- бальной переменной errno присваивает значение:
ENOMEM - Недостаточно памяти.
Переносимость sbrk доступна в системах UNIX.
Смотрите также
Пример:
#include
#include
int main(void) { printf("Изменение выделенного объема памяти с помощью sbrk\n"); printf("Перед вызовом sbrk свободны %lu байт.\n", (unsigned long)coreleft()); sbrk(1000); printf("После вызова sbrk свободны %lu байт.\n", (unsigned long)coreleft()); return 0; }

Scanf

scanf
Функция Выполняет форматированный ввод из потока stdin.
Синтаксис #include
int scanf(const char *format [,adress, ...]);
Файл, содержащий stdio.h прототип
Описание Функция scanf просматривают входные поля, символ за символом, считывая их из потока stdin. Затем каждое поле форматируется в соответствии со спе- цификацией формата, передаваемой scanf аргументом format. После этого она записывает отформатиро- ванный ввод по адресам, задаваемым аргументами, следующими за форматной строкой. Число специфика- ций формата должно соответствовать числу адресов.
Строка формата.
Строка формата, присутствующая в каждом вызове функций семейства ...scanf, управляет тем, каким образом каждая функция будет считывать, преобра- зовывать и записывать входные поля. Для заданных спецификаций формата должно быть достаточное ко- личество адресных аргументов; если это не соблю- дается, результат может быть непредсказуемым и, вероятно ошибочным. Лишние адресные аргументы (больше, чем требует формат) будут игнорированы.
Примечание. scanf часто приводит к непредсказуе- мым результаттам, когда вы отклоняетесь от точно- го шаблона. Вам необходимо помнить, что нужно указать scanf, каким образом синхронизировать ко- нец строки. В результате предпочтительнее на наш взгляд комбинация gets или fgets, за которыми следует sscanf.
Строка фомата - это символьная строка, содержащая три типа объектов: незначащие символы, значащие символы и спецификации формата.
Незначащие символы - это пусто ( ), знак табуля- ции (\t) и символ перехода на новую строку (\n). Как только функция семейства ...scanf встречает незначащий символ в строке формата, она считыва- ет, но не сохраняет все последующие незначащие символы до тех пор, пока не встретится первый значащий символ.
Значащие символы - это все символы ASCII, за иск- лючением знака процента (%). Если функция семейс- тва ...scanf встречает в форматной строке значаю- щий символ, она считывает, но не сохраняет данный символ.

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

Хвостовые незначащие символы остаются несчитанны- ми (включая символ перехода на новую строку), ес- ли они не встретились явно в строке формата.

Спецификации формата.

Спецификации формата функций ... scanf имеют сле- дующую форму:

%[*] [ширина] [F/N] [h/l/L] символ типа

Спецификация формата начинается со знака %. После этого знака следует спецификации в определенном порядке:

- необязательный символ подавления назначения [*]; - необязательный спецификатор ширины [width]; - необязательный модификатор размера указателя [F/N]; - необязательный модификатор типа аргумента [h/l/L]; - символ типа.

Необязательные компоненты форматной строки.

Далее перечислены основные принципы форматирова- ния и спецификаторы форматной строки:

-----------------T--------------------------------------------------- Символ или ¦ Каким образом он управляет форматом. спецификатор ¦ -----------------¦--------------------------------------------------- * ¦ подавляет назначение следующего входного поля; width ¦ максимальное число считываемых символов; если ¦ функция ...scanf встречает незначащий или непреоб- ¦ разуемый символ, могут быть прочитаны дополнитель- ¦ ные символы; size ¦ отвергает заданный по умолчанию размер адресного ¦ аргумента ¦ (N - ближний указатель, ¦ F - дальний указатель) тип ¦ отвергает заданный по умолчанию адресный аргумент аргумента ¦ (h - короткое целое, ¦ l - длинное целое, если символ типа указывает ¦ целочисленное преобразование ¦ l - двойной точности, если символ типа указывает ¦ на преобразование чисел с плавающей точкой ¦ L - длинное, двойной точности (допустимо только ¦ при преобразовании чисел с плавающей точкой -----------------+---------------------------------------------------

Символы типов для функций ...scanf.

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


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

-------T----------------T-------------------------------------------- Символ ¦ Ожидаемый ввод ¦ Тип аргумента типа ¦ ¦ -------+----------------+-------------------------------------------- Числовые данные. -------T----------------T-------------------------------------------- d ¦ десятичное ¦ указатель на целое (int *arg) ¦ целое ¦ D ¦ десятичное ¦ указатель на длинное целое (long *arg) ¦ целое ¦ o ¦ восьмеричное ¦ указатель на целое (int *arg) ¦ целое ¦ O ¦ восьмеричное ¦ указатель на длинное целое (long *arg) ¦ целое ¦ i ¦ десятичное, ¦ указатель на длинное целое (long *arg) ¦ восьмеричное ¦ ¦ или шестнадца- ¦ ¦ теричное целое ¦ u ¦ десятичное ¦ указатель на целое без знака (unsigned ¦ целое без знака¦ int *arg) U ¦ десятичное ¦ указатель на длинное целое без знака ¦ целое без знака¦ (unsigned long *arg) x ¦ шестнадцатерич-¦ указатель на целое (int *arg) ¦ ное целое ¦ X ¦ шестнадцатерич-¦ указатель на длиное целое (long *arg) ¦ ное целое ¦ e ¦ число с плаваю-¦ указатель на число с плавающей точкой ¦ щей точкой ¦ (float *arg) E ¦ число с плаваю-¦ указатель на число с плавающей точкой ¦ щей точкой ¦ (float *arg) f ¦ число с плаваю-¦ указатель на число с плавающей точкой ¦ щей точкой ¦ (float *arg) g ¦ число с плаваю-¦ указатель на число с плавающей точкой ¦ щей точкой ¦ (float *arg) G ¦ число с плаваю-¦ указатель на число с плавающей точкой ¦ щей точкой ¦ (float *arg) -------+----------------+-------------------------------------------- Символьные данные. -------T----------------T-------------------------------------------- s ¦ строка символов¦ указатель на массив символов (char arg[ ]) c ¦ символ ¦ указатель на символ (char *arg); если шири- ¦ ¦ на поля w задается вместе с символом типа c ¦ ¦ (как напр. %5c): указатель на массив из w ¦ ¦ символов (char arg[w]); % ¦ символ % ¦ Никакого преобразования не происходит; сим- ¦ ¦ вол % сохраняется. -------+----------------+-------------------------------------------- Указатели. -------T----------------T-------------------------------------------- n ¦ (отсутствует) ¦ указатель на целое (int *arg) ¦ ¦ данный указатель хранит количество считан- ¦ ¦ ных символов до %n. p ¦ шестнадцатерич-¦ указатель на данный объект (дальний * или ¦ ное число в ¦ ближний *). ¦ форме: ¦ Преобразования %p предусматривают стандарт- ¦ YYYY:ZZZZ ¦ ный размер указателя, принятый в данной мо- ¦ или ZZZZ ¦ дели памяти. -------+----------------+--------------------------------------------


Входные поля.

Входным полем может быть одно из следующих выра- жений:

- все символы до (но не включая) следующего по порядку незначающего символа;

- все символы до первого встретившегося, который не может быть преобразован текущей спецификаци- ей формата (такие, например, как цифры 8 и 9 при восьмеричном формате).

- до n символов, где n - это заданная ширина по- ля.

Соглашения.

Далее перечислены некоторые соглашения, принятые для определенных спецификаций формата.

преобразование %c

Данная спецификация позволяет считывать 1, следу- ющий по порядку символ, включая и незначащие. Чтобы пропустить один незначащий и прочесть сле- дующий значащий символ, используйте %1s.

Преобразование %Wc (W - спецификация ширины).

Адресный аргумент является указателем на массив символов; массив состоит из W элементов (char arg[W]).

Преобразование %s

Адресный аргумент является указателем на массив символов (char arg[]).

Размер массива должен быть по крайней мере (n+1) байтов, где n = длина строки s (в символах). Входное поле оканчивается пробелом или символом перехода на новую строку. К символьной строке ав- томатически добавляется нулевое окончание и запи- сывается, как последний элемент массива.

Преобразование %[search set]

Набор символов, заключенный в квадратные скобки, может быть заменен на символ типа s. Адресный ар- гумент является указателем на массив символов (char arg[]). В квадратные скобки заключен набор символов, который определяет "искомый набор" воз- можных символов, формирующих строку (входное по- ле).

Если первый символ в скобках - это символ (^), искомый набор инвертируется таким образом, чтобы содержать все символы ASCII кроме тех, что пере- числены между квадратными скобками. (Обычно, сим- вол будет включен в инвертированный искомый на- бор, если он не указан явно в списке символов после первого знака).

Входное поле представляет собой строку символов, не ограниченную незначащими символами. Функции семейства ...scanf будут считывать входное поле до тех пор, пока не появится первый символ, от- сутствующий в искомом наборе (или в инвертирован- ном искомом наборе). Далее приведены два примера данного типа преобразования:


%[abcd] будет производиться поиск во входном поле любых из символов a, b, c, d.

%[^abcd] будет производиться поиск во входном поле любых символов, кроме a, b, c, d.

Здесь вы можете также указать диапазон (чисел или символов). Это короткая запись. К примеру для по- иска десятичной цифры во входном потоке можно указать: %[0123456789] или тоже самое, но короче: %[0-9] Для поиска символов вы можете использовать следу- ющие сокращения:

%[A-Z] Все символы верхнего регистра %[0-9A-Za-z] Все десятичные цифры и все сим- волы (и верхнего и нижнего ре- гистра). %[A-FT-Z] Все символы верзхнего регистра с A по F и c T по Z

В такой сокращенной записи необходимо придержи- ваться следующих правил:

- Символ предшествующий тире (-) должен быть лек- сически меньше символа, находящегося правее ти- ре;

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

- Символы являющиеся краями диапазона (т.е. слева и справо от тире) не должны входить в другой диапазон.

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

%[-+*/] Четыре арифметических операции %[z-a] Символы z, - и a. %[+0-9-A-Z] Символы + и - и диапазон от 0 до 9 и от A до Z %[+0-9A-Z-] Также символы + и - и диапазон от 0 до 9 и от A до Z %[^-0-9+A-Z] Все символы, исключая + и - и символы в диапазоне от 0 до 9 и от A до Z

преобразования %e, %E, %f, %g, %G (с плавающей точкой.

Числа с плавающей точкой во входном поле должны соответствовать следующему формату:

[+/-]ddddddddd [.]dddd [E|e] [+/-]ddd,

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

Кроме этого +INF, -INF, +NAN, -NAN распознаются как числа сплавающей точкойю При этом знак должен присутсвовоать обязательно (INF - бесконечность, NAN - не число). преобразования %d,%i,%o,%x,%D,%I,%O,%X,%c,%h.


В любом преобразовании, в котором разрешены ука- затели на символ, целое, длинное целое, могут быть использованы указатели на символ без знака, целое без знака, длинное целое без знака.

Символ подавления присвоения.

Символом подавления назначения является звездочка (*); Не путайте его символом адресации в языке СИ (также звездочка).

Если данный символ (*) следует за знаком % в спе- цификации формата, следующее входное поле будет считано, но не будет присвоено соответствующему адресному аргументу. Предполагается, что подавля- емое входное поле соответствует типу, объявленно- му вслед за символом *. Точное символьное соот- ветствие и подавление присвоения не связаны между собой непосредственно.

Спецификаторы ширины.

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

Если входное поле содержит менее n символов, фун- кции семейства ...scanf прочтут все символы дан- ного поля, затем перейдут к следующему полю и со- ответствующей ему спецификации формата.

Если до того, как будет прочитано n символов, встретится незначащий символ или неконвертируемый символ, то все символы до данного будут считаны и преобразованы, затем функция перейдет к следующе- му полю и спецификации формата.

Неконвертируемым символом считается такой символ, который не может быть преобразован в соответствии с данной спецификацией формата (например, символы 8 или 9 при восмеричном формате, или символы J или K при шестнадцатеричном или десятичном форма- те). --------------T------------------------------------------------------ Спецификатор ¦ Как спецификатор ширины влияет на сохраняемый ширины ¦ ввод. --------------+------------------------------------------------------ n ¦ До n символов будет считано, преобразовано и запи- ¦ сано в текущий адресный аргумент. --------------+------------------------------------------------------

Модификаторы размера ввода и типа аргумента.

Модификаторы размера ввода (N и F) и типа аргу- мента (h,l и L) оказывают влияние на то, каким образом функции ...scanf интерпретируют соответс- твующие адресные аргументы arg.


Модификаторы F и N отвергают заданные стандартно или объявленные размеры аргумента arg.

Модификаторы h, l и L обозначают, какой тип пре- образования будет использоваться для следующих за ними входных данных (h- короткое целое, l- длин- ное целое, L - длинное двойной точности). Входные данные будут преобразованы в заданный тип, и ар- гумент arg для входных данных будет адресовать объект соответствующего размера ("короткий" объ- ект для %h и длинный или двойной точности объект для %l или %L). -------------T------------------------------------------------------- Модификатор ¦ Как он влияет на преобразование -------------+------------------------------------------------------- F ¦ Отвергает заданный по умолчанию или объявленный раз- ¦ мер; ¦ arg интерпретируется, как дальний указатель. N ¦ Отвергает заданный по умолчанию или объявленный раз- ¦ мер; ¦ arg интерпретируется, как ближний указатель. ¦ В сверхбольшой моделе не может использоваться ни с ¦ какими преобразованиями. h ¦ Для типов d,i,o,u,x: конвертирует ввод в короткое це- ¦ лое, записывает в "короткий" объект. ¦ Для типов D,I,O,C,X: не оказывает влияния. ¦ Для типов e,f,c,s,n,p: не оказывает влияния. l ¦ Для типов d,i,o,u,x: преобразует ввод в длинное целое, ¦ записывает в "длинный" объект. ¦ Для типов e,f: преобразует ввод в число двойной точ- ¦ ности, записывает в объект двойной точности. ¦ Для типов D,I,O,U,X: не оказывает влияния. ¦ Для типов c,s,n,p: не оказывает влияния. L ¦ Для типов e, f, g: преобразует введенные данные в ¦ длинное двойной точности, и сохраняет их в объекте с ¦ тем же типом. На остальные форматы влияния не оказы- ¦ вает. -------------+-------------------------------------------------------

Когда функции ...scanf прекращают считывание.

Функции семейства ...scanf могут прекратить счи- тывание определенного входного поля до достижения нормального конца данных (незначащий символ), или считывание может завершиться на середине данных (по различным причинам).

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


-Символ подавления присвоения (*) появляется в спецификации формата после знака процента %; те- кущее поле считывается, но не запоминается.

-Считано width символов (width - спецификатор ши- рины, положительное десятичное целое).

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

-Следующий считанный символ входного поля отсутс- твует в "поисковом" наборе (или, наоборот, при- сутствует в инвертированном "поисковом" наборе).

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

Функции семейства ...scanf заканчивают свою рабо- ту при следующих ситуациях:

-Следующий по порядку символ входного поля не со- ответствует относящемуся к нему значащему симво- лу в строке формата.

-Следующий символ во входном поле - EOF.

-Строка формата исчерпана.

Если в строке формата появляется последователь- ность символов, не являющаяся частью спецификации формата, она должна совпадать с текушей последо- вательностью символов входного поля; функции ...scanf считывают, но не сохраняют совпадающие символы. Когда встречается конфликтный символ, он остается во входном поле, как бы непрочитанным.

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

Если одна из данных функций делает попытку чтения в конце файла (EOF), возвращаемым значением будет EOF.

Если не было записано ни одного поля, возвращает- ся значение 0.

Переносимость scanf поддерживается на системах UNIX и определена в стандарте ANSI C. Определены у Кернигана и Рит- чи.

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

#include

#include

int main(void) { char label[20]; char name[20]; int entries = 0; int loop,age; double salary; struct Entry_struct { char name[20]; int age; float salary; } entry[20]; /* ввести заглавие, как строку, длиной до 20 символов */ printf("Введите заглавие для диаграммы: "); scanf("%20s",label); fflash(stdin); /* сбросить входной поток, в случае ошибки */ /* ввести число элементов в виде целого */ printf("Сколько элементов (не > 20): "); scanf("%d",&entries); fflash(stdin); /* сбросить входной поток, в случае ошибки */ for(loop = 0; loop < entries; ++loop) { printf("Элемент %d\n",loop); /* ввести имя, только буквы в верхнем или нижнем регистре */ printf("Имя: "); scanf("%[A_Za-z]",entry[loop].name); fflash(stdin); /* сбросить входной поток, в случае ошибки */ /* ввести возраст, как целое число */ printf("Возраст: "); scanf("%d",&entry[loop].age); fflash(stdin); /* сбросить входной поток, в случае ошибки */ /* ввести размер зарплаты как float */ printf("Зарплата: "); scanf("%f",&entry[loop].salary); fflash(stdin); /* сбросить входной поток, в случае ошибки */ } /* ввести имя, возраст и зарплату как строку, целое и число с пла- вающей точкой, соответственно */ printf("Пожалуйста, введите свое имя, возраст и зарплату.\n"); scanf("%20s %d %lf",name,&age,&salary); /* напечатать введенные данные */ printf("\n\AТаблица %s\n",label); printf("Вычислена %s, возраст %d, $%15.2lf\n",name,age,salary); printf("-----------------------------------------------------\n"); for(loop = 0; loop

Searchpa

searchpath
Функция Просматривает маршрут в поисках файла.
Синтаксис #include
char *searchpath(const char *filename);
Файл, содержащий dir.h прототип
Описание Функция searchpath делает попытку найти файл с именем filename, используя маршрут DOS, определя- емый в переменной окружения PATH. Указатель на полное имя маршрута файла возвращается в качестве значения функции. Сначала просматривается текущая директория рабочего диска. Если файл там не най- ден, вызывается переменная операционной среды PATH и каждая директория в маршруте PATH просмат- ривается до тех пор, пока файл не будет найден или маршрут не будет исчерпан.
Как только файл будет найден, возвращается стро- ка, содержащая полное имя маршрута файла. Эта строка затем может быть использована в вызовах функций open или exec... для получения доступа к файлу.
Возвращаемая строка с именем файла помещается в static буфер и переписывается при каждом последу- ющем вызове функции searchpath.
Возвращаемое Если файл успешно найден, возвращается указатель значение на строку filename, в противном случае, функция searchpath возвращает значение NULL.
Переносимость Функция уникальна для DOS.
Смотрите также .., ..,
Пример:
#include
#include
int main(void) { char *p; p = searchpath("TLINK.EXE"); printf("Маршрут для TLINK.EXE : %s\n", p); p = searchpath("NOTEXIST.FIL"); printf("Маршрут для NOTEXIST.FIL : %s\n", p); return 0; }
Вывод: Маршрут для TLINK.EXE : C:\BIN\TLINK.EXE Маршрут для NOTEXIST.FIL : (null)

Sector

sector
Функция Рисует и закрашивает эллиптические сектора.
Синтаксис #include
void far sector (int x,int y,int stangle, int endangle,int xradius, int yradius);
Файл, содержащий graphics.h прототип
Назначение sector рисует эллиптический сектор с центром в точке с координатами (x,y) и горизонтальными и вертикальными радиусами xradius и yradius соот- ветственно, текущим цветом рисунка. Дуга рисуется от угла stangle до угла endangle. Сектор рисуется текущим цветом и закрашивается цветом и шаблоном, определенными функциями setfillstyle или setfillpattern.
Угол для arc отсчитывается против часовой стрел- ки, где 0 градусов соответствует 3 часам на ци- ферблата, 90 градусов - 12 часам и т.д.
Если во время заполнения сектора возникает ошиб- ка, graphresult возвращает значение -6 (grNoScanMem).
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
EW1setgraphbufsizeFW0
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int midx,midy,i; int stangle = 0,endangle = 360; int xradius = 100,yradius = 50;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx() / 2; midy = getmaxy() / 2;
/* цикл по шаблонам */ for(i=EMPTY_FILL; i

Setactiv

setactivepage
Функция Устанавливает активную страницу для графического вывода.
Синтаксис #include
void far setactivepage(int page);
Файл, содержащий graphics.h прототип
Описание setactivepage делает страницу page активной. Весь последующий графический вывод будет направ- ляться на эту страницу.
Активной графической страницей может быть та, ко- торую вы видите на экране, хотя это и не обяза- тельно. Это зависит от количества графических страниц в вашей системе. Только графические карты EGA, VGA и Hercules поддерживают несколько стра- ниц.
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Выбрать драйвер и режим, который он поддерживает */ int graphdriver = EGA, gmode = EGAHI, errorcode; int x,y,ht;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"\\tc");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } x = getmaxx() / 2; y = getmaxy() / 2; ht = textheight("W"); /* выбрать для вывода невидимую в настоящий момент страницу */ setactivepage(1); /* нарисовать на ней линию */ line(0,0,getmaxx(),getmaxy()); settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(x,y,"This is page #1"); outtextxy(x,y+ht,"Press any key to halt"); /* выбрать для вывода страницу 0 */ setactivepage(0); /* вывести текст на страницу 0 */ outtextxy(x,y,"This is page #0"); outtextxy(x,y+ht,"Press any key to view page #1"); getch(); /* сделать страницу 1 видимой */ setvisualpage(1);
/* очистка */ getch(); closegraph(); return 0; }

Setallpa

setallpalette
Функция Изменяет всю палитру красок.
Синтаксис #include
void far setallpalette(struct palettetype far *palette);
Файл, содержащий graphics.h прототип
Описание setallpalette устанавлмвает текущую политру в значения, заданные в структуре palettetype, на которую указывает параметр palette. Вы можете частично (или полностью) изменить цвета политры EGA/VGA c помощью функции setallpalette.
Константа MAXCOLORS и структура palettetype ис- пользуемые в setallpalette, определены в graphics.h следующим образом:
#define MAXCOLORS 15
struct palettetype{ unsigned char size; signed char colors[MAXCOLORS+1]; };
size содержит количество цветов в палитре для те- кущего графического драйвера в текущем режиме.
colors -массив из size байтов, содержащий ряд но- меров цветов для каждого элемента палитры. Если элемент в массиве colors равен -1, то цвет палит- ры для этого элемента не изменяется.
Элементы массива colors, используемые в setallpalette, могут быть представлены в виде символических констант, определенных в graphics.h
----------------------------------------------------- Таблица доступных цветов ----------------------------------------------------- CGA EGA/VGA Имя Знач Имя Знач. ----------------------------------------------------- BLACK 0 EGA_BLACK 0 BLUE 1 EGA_BLUE 1 GREEN 2 EGA_GREEN 2 CYAN 3 EGA_CYAN 3 RED 4 EGA_RED 4 MAGENTA 5 EGA_MAGENTA 5 BROWN 6 EGA_LIGHTGRAY 7 LIGHTGRAY 7 EGA_BROWN 20 DARKGRAY 8 EGA_DARKGRAY 56 LIGHTBLUE 9 EGA_LIGHTBLUE 57 LIGHTGREEN 10 EGA_LIGHTGREEN 58 LIGHTCYAN 11 EGA_LIGHTCYAN 59 LIGHTRED 12 EGA_LIGHTRED 60 LIGHTMAGENTA 13 EGA_LIGHTMAGENTA 61 YELLOW 14 EGA_YELLOW 62 WHITE 15 EGA_WHITE 63 -----------------------------------------------------
Заметим, что цвета зависят от текущих графическо- го драйвера и графического режима.
Изменения, произведенные в палитре, сразу же мо- гут быть увидены на экране. При изменении цвета в палитре, все на экране, окрашенное в этот цвет, станет окрашенным в новый цвет.

Замечание. setallpalette не может использоваться с драйвером IBM-8514.

Возвращаемое Если в setallpalette передается ошибочное значение значение, graphresult возвратит -11(grError) а текущая палитра останется без изменений.

Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.

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

Пример:

#include

#include

#include

#include

int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; struct palettetype pal; int color,maxcolor,ht; int y=10; char msg[80];

/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */

{ printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } maxcolor = getmaxcolor(); ht = 2*textheight("W"); /* получить копию палитры */ getpalette(&pal); /* вывести значения цветов палитры */ for(color = 1; color

Setaspec

setaspectratio
Функция Изменяет корректитующий фактор характеристичес- кого отношения, установленного по умолчанию.
Синтаксис #include
void far setaspectratio(int xasp,int yasp);
Файл, содержащий graphics.h прототип
Описание setaspectratio испльзуется для изменения, установленного по умолчанию характеристического отношения графической системы. Характеристическое отношение используется графической системой для того, чтобы убедиться, что окружность рисуется круглой. Если окружность на экране выглядит эл- липсом, монитор плохо настроен. Это может быть исправлено в аппаратном обеспечении посредством перенастройки монитора, или это может быть сдела- но в пограммном обеспечении, используя setaspectratio для установки характеристического отношения. Для получения текущего характеристи- ческого отношения для системы вызывается getaspectratio.
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int xasp,yasp,midx,midy;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx() / 2; midy = getmaxy() / 2; setcolor(getmaxcolor());
/* получить текущее характеристическое отношение */ getaspectratio(&xasp,&yasp);
/* нарисовать нормальную окружность */ circle(midx,midy,100); getch();
/* нарисовать окружность, вытянутую в ширину */ cleardevice(); setaspectratio(xasp/2,yasp); circle(midx,midy,100); getch();
/* нарисовать окружность, вытянутую в длину */ cleardevice(); setaspectratio(xasp,yasp/2); circle(midx,midy,100); getch();
/* очистка */ getch(); closegraph(); return 0; }

Setbkcol

setbkcolor
Функция Устанавливает текущий цвет фона, используя палитру.
Синтаксис #include
void far setbcolor(int color);
Файл, содержащий graphics.h прототип
Описание setbcolor устанавливает фон в цвет, опре- деляемый color. Аргумент color может быть именем или номером, как показано в следующей таблице.
----------------------------------------------------- номер имя номер имя ----------------------------------------------------- 0 BLACK 8 DARKGRAY 1 BLUE 9 LIGHTBLUE 2 GREEN 10 LIGHTGREEN 3 CYAN 11 LIGHTCYAN 4 RED 12 LIGHTRED 5 MAGENTA 13 LIGHTMAGENT 6 BROWN 14 YELLOW 7 LIGHTGRAY 15 WHITE -----------------------------------------------------
Замечание. Эти символические имена определены в graphics.h
Например, если вы хотите установить цвет фона в синий, вы можете вызвать
setbkcolor(BLUE) /* или */ setbkcolor(1)
На системах с CGA и EGA setbkcolor изменяет цвет фона изменением первого элемента палитры.
Замечание. Если вы используете VGA или EGA и ме- няте цвета палитры с помощью setpalette или setallpalette, то предопределенные символические константы могут не дать требуемого цвета. Это происходит потому, что параметр для setbkcolor отображает номер элемента в текущей палитре, а не указанный цвет (если параметр не равен 0, т.к. он всегда устанавливает цвет фона в черный).
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Выбрать драйвер и режим, поддерживающие несколько цветов фона */ int graphdriver = EGA, gmode = EGAHI, errorcode; int bkcolor,x,y,maxcolor; char msg[80];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult();
if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } /* максимальный поддерживаемый индекс цвета */ maxcolor = getmaxcolor(); /* установить центрирование текста */ settextjustify(CENTER_TEXT,CENTER_TEXT); x = getmaxx() / 2; y = getmaxy() / 2; /* цикл по допустимым цветам */ for(bkcol=0;bkcol

Setblock

setblock
Функция Модифицирует размер ранее выделенного сегмента памяти.
Синтаксис #include
int setblock(unsigned segx, unsigned newsize);
Файл, содержащий dos.h прототип
Описание setblock изменяет размер сегмента памяти. segx - адрес сегмента, который был получен при вызове функции allocmem. newsize - это новый необходимый размер сегмента в параграфах.
Возвращаемое setblock возвращает -1 при успешном завершении. значение При возникновении ошибки она возвращает размер в параграфах самого большого блока и устанавлива- ет соответствующее значение в переменной _doserrno.
Переносимость setblock уникальна для DOS.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { unsigned int size,segp; int stat; size = 64; /* выделить 1024 байта (16 * 64) */ stat = allocmem(size,&segp); if(stat == -1) printf("Память выделена в сегменте %X\n",segp); else { printf("Ошибка. Максимальный размер блока: %d\n",stat); exit(1); } stat = setblock(segp,size*2); if(stat == -1) printf("Расширенный блок в сегменте %X\n",segp); else printf("Ошибка. Максимальный размер блока: %d\n",stat); freemem(segp); return 0; }

Setbuf

setbuf
Функция Назначает буфер для потока stream.
Синтаксис #include
void setbuf(FILE *stream, char *buf);
Файл, содержащий stdio.h прототип
Описание Функция setbuf выделяет буфер buf для использова- ния в операциях ввода/вывода - вместо автомати- чески выделяемого буфера. Он будет использоваться только после того, как данный поток stream будет открыт.
При использовании функции setbuf, если параметр buf = NULL, ввод/вывод производится без буфера; в противном случае буфер используется.
Буфер должен быть длиной BUFSIZE байтов (данная константа определяется в файле stdio.h).
Стандартный ввод и вывод stdin и stdout не ис- пользуют буферов, если они не были переназначены; в противном случае, ввод и вывод производиться с буферизацией.
unbuffered (небуферизованный ввод/вывод) означа- ет, что символы, записываемые в поток, поступают непосредственно в файл или на устройство; в то время как buffered (буферизованный ввод/вывод) означает, что символы накапливаются и затем запи- сываются, как блок.
Функция setbuf может привести к непредвиденным результатам, если она вызывается для потока stream, причем не следует немедленно за операцией открытия или вызовом функции fseek. Вызов функции setbuf после того, как поток stream обработан без буферов, разрешен, и не вызовет ошибок.
Наиболее распространенной причиной ошибки являет- ся размещение буфера, в качестве automatiс (ло- кальной) переменной и затем попытка закрыть файл до выхода из функции, в которой был объявлен бу- фер.
Возвращаемое Нет. значение
Переносимость Функция поддерживаются на системах UNIX и стан- дартом ANSI C.
Смотрите также
Пример:
#include
/* BUFSIZE определено в stdio.h */ char buf[BUFSIZE];
int main(void) { int i; /* подключить буфер к стандартному потоку */ setbuf(stdout,buf); /* поместить в буфер символы */ puts("Это тест буферизованного вывода.\n"); puts("Этот вывод осуществляется в buf\n"); puts("и вы ничего не увидите, пока буффер не заполнится\n"); puts("или вы не сбросите его.\n"); /* сбросить поток */ fflush(stdout); return 0; }

Setcbrk

setcbrk
Функция Устанавливает control-break.
Синтаксис #include
int setcbrk(int value);
Файл, содержащий dos.h прототип
Описание setcbrk использует функцию DOS 0х33 для установки флага Ctrl_Break.
value = 0 Выключает реакцию на Ctrl_Break (вклю- чена только во время операций ввода/вы- вода на консоль, принтер или коммуника- ционный порт.)
value = 1 Включает реакцию на Ctrl_Break. (При любых системных вызовах).
Возвращаемое setcbrk возвращает value, т.е. переданное значение значение.
Переносимость setcbrk уникальна для DOS.
Смотрите также
Пример:
#include
#include
#include
int main(void) { int break_flag; printf("Для выключения нажмите 0\n"); printf("Для включения нажмите 1\n"); break_flag = getch()-'0'; /* прим. пер. в оригинале без вычит. */ setcbrk(break_flag); if(getcbrk()) printf("Флаг Ctrl-Break включен\n"); else printf("Флаг Ctrl-Break выключен\n"); return 0; }

Setcolor

setcolor
Функция Устанавливает текущий цвет рисования, используя палитру.
Синтаксис #include
void far setcolor(int color);
Файл, содержащий graphics.h прототип
Описание setcolor изменяет текущий цвет рисования, ко- торый может изменяться от 0 до getmaxcolor.
Текуший цвет рисования - это значение которое присваивается пикселям при рисовании линий и т.п. Следующие таблицы содержат цвета, используемые в CGA и EGA соответственно. ----------------------------------------------------------- Номер Константа присвоенная номеру цвета(значение пиксел палитры 1 2 3 ----------------------------------------------------------- 0 CGA_LIGHTGREEN CGA_LIGHTRED CGA_YELLOW 1 CGA_LIGHTCYAN CGA_LIGHTMAGENTA CGA_WHITE 2 CGA_GREEN CGA_RED CGA_BROWN 3 CGA_CYAN CGA_MAGENTA CGA_LIGHTGRA ----------------------------------------------------------- --------------------------------- Числовое Символическое значение имя --------------------------------- 0 BLACK 1 BLUE 2 GREEN 3 CYAN 4 RED 5 MAGENTA 6 BROWN 7 LIGHTGRAY 8 DARKGRAY 9 LIGHTBLUE 10 LIGHTGREEN 11 LIGHTCYAN 12 LIGHTRED 13 LIGHTMAGENTA 14 YELLOW 15 WHITE ----------------------------------- Вы выбираете цвет рисования, посылая либо сам но- мер цвета, либо соответствующее символическое имя в setcolor. Например, в режиме CGAC0 палитра сос- тоит из четырех цветов: цвет фона, яркозеленый, яркокрасный и желтый. В этом режиме либо вызовом setcolor(3) либо setcolor(CGA_YELLOW) выбирается желтый цвет рисунка.
Возвращаемое Нет. значение
Переносимость Эта функция пригодна только для компьюте- ров IBM PC и совместимых с ними, оснащенных дис- плейными адаптерами, поддерживающими графический режим.
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Выбрать драйвер и режим, поддерживающие несколько цветов */ int graphdriver = EGA, gmode = EGAHI, errorcode; int color,x,y,maxcolor; char msg[80];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } /* максимальный поддерживаемый индекс цвета */ maxcolor = getmaxcolor(); /* установить центрирование текста */ settextjustify(CENTER_TEXT,CENTER_TEXT); x = getmaxx() / 2; y = getmaxy() / 2; /* цикл по допустимым цветам */ for(color=0;color

Setdate

setdate
Функция Устанавливает дату DOS.
Синтаксис #include
void setdate(struct date *datep);
Файл, содержащий dos.h прототип
Описание setdate устанавливает системную дату (месяц, день, год) в структуре data, на которую указывает datep.
Структура date определена следующим образом:
struct date { int da_year; /* год */ char da_day; /* день месяца */ char da_mon; /* месяц (1 = Янв.) */ };
Возвращаемое Нет. значение
Переносимость setdate уникальна для DOS.
Смотрите также
Пример:
#include
#include
#include
int main(void) { struct date reset; reset.da_year = 2001; reset.da_mon = 1; reset.da_day = 1; setdate(&reset); system("date"); return 0; }

Setdisk

setdisk
Функция Устанавливает спецификацию текущего дисковода.
Синтаксис #include
int setdisk(int drive);
Файл, содержащий dir.h прототип
Описание setdisk устанавливает текущим дисковод, определяе- мый параметром drive (0 - A, 1 - B, 2 - C и т. д.). Эквивалентно вызову функции DOS 0х0Е.
Возвращаемое setdisk возвращает общее число доступных дисково- значение дов.
Переносимость setdisk уникальна для DOS.
Смотрите также
Пример:
#include
#include
int main(void) { int maxdrives; maxdrives = setdisk(2); printf("Доступно %d логических устройств\n",maxdrives); return 0; }

Setdta

setdta
Функция Устанавливает адрес DTA. (Область связи с диском).
Синтаксис #include
void setdta(char far *dta);
Файл, содержащий dos.h прототип
Описание setdta изменяет текущий адрес области связи с дис- ком (DTA) по значению параметра dta.
Возвращаемое Нет. значение
Переносимость setdta уникальна для DOS.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { char far *save_dta; char line[80]; char buffer[256] = "SETDTA test!"; struct fcb blk; int result; /* ввести имя файла */ printf("Введите имя нового файла (без маршрута, например\ a:file.dat)\n"); gets(line); /* записать имя файла в FCB */ if(!parsfnm(line,&blk,1)) printf("Устройство #%d файл: %s\n\n",blk.fcb_drive, blk.fcb_name); /* создать файл, с использованием функций DOS, работающих с FCB */ if(bdosptr(0x16,&blk,0)==-1) { printf("Ошибка при создании файла\n"); exit(1); } /* сохранить старый DTA, создать новый */ save_dta = getdta(); setdta(buffer); /* вывод в файл */ blk.fcb_recsize = 256; blk.fcb_random = 0L; result = randbwd(&blk,1); /* проверить результат операции */ printf("result = %d",result); if(!result) printf("Запись закончена успешно\n"); else { perror("Ошибка диска\n"); exit(1); } /* закрыть файл */ if(bdosptr(0x10,&blk,0)==-1) { printf("Ошибка при закрытии файла\n"); exit(1); } /* восстановить DTA */ setdta(save_dta); return 0; }

Setfillp

setfillpattern
Функция Выбирает определенный пользователем шаблон закраски.
Синтаксис #include
void far setfillpattern(char far *upattern, int color);
Файл, содержащий graphics.h прототип
Описание setfillpattern аналогична функции setfill- style, за исключением того, что вы используете ее для установки определенного пользователем шаблона 8 x 8 вместо встроенных шаблонов.
upattern - указатель на последовательность из 8 байт, где каждый байт соответствует 8-ми пикселям шаблона. Каждый бит шаблонного байта установлен- ный в 1, вызывает отображение соответствующего пиксела на экране.
Возвращаемое Нет. значение
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int maxx,maxy; char pattern[8] = {0x00,0x70,0x20,0x27,0x24,0x24,0x07,0x00);
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } maxx = getmaxx(); maxy = getmaxy(); setcolor(getmaxcolor()); /* выбрать пользовательский шаблон */ setfillpattern(pattern,getmaxcolor()); /* заполнить экран с помощью этого шаблона */ bar (0,0,maxx,maxy); /* очистка */ getch(); closegraph(); return 0; }

Setfills

setfillstyle
Функция Устанавливает шаблон и цвет заполнения.
Синтаксис #include
void far setfillstyle(int pattern,int color);
Файл, содержащий graphics.h прототип
Описание setfillstyle устанавливает текущие цвет и шаблон заполнения. Для установки шаблона, опреде- ленного пользователем не устанавливайте pattern равным 12 (USER_FILL) в setfillfile, а лучше ис- пользуйте функцию setfillpattern.
Перечисляемый тип fill_patterns, определенный в graphics.h, задает имена встроенных шаблонов за- полнения и индикатор для шаблона, определяемого пользователем. -------------------------------------------------------------- имя значение описание -------------------------------------------------------------- EMPTY_FILL 0 заполнеие цветом фона SOLD_FILL 1 сплошное заполнение цветом заполнения LINE_FILL 2 заполнение ______ LSTLASH_FILL 3 заполнение ////// SLASH_FILL 4 заполнение /// толстой линией BKSLASH_FILL 5 заполнение \\\ толстой линией LTBKSLASH_FILL 6 заполнение \\\\ HATCH_FILL 7 светлая штриховка сеткой XHATCH_FILL 8 крестообразная штриховка INTERLEAVE_FILL 9 тканеобразная штриховка WIDE_DOT_FILL 10 заполнение редкими точками CLOSE_DOT_FILL 11 заполнение частыми точками USER_FILL 12 шаблон заполнения, определяемый пользователем -------------------------------------------------------------- Все, кроме EMPTY_FILL заполняют текущим цветом; EMPTY_FILL использует текущий цвет фона.
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
#include
/* имена поддерживаемых типов заполнения */ char *fname[] = {"EMPTY_FILL", "SOLID_FILL", "LINE_FILL", "LSTLASH_FILL", "SLASH_FILL", "BKSLASH_FILL", "LTBKSLASH_FILL", "HATCH_FILL", "XHATCH_FILL", "INTERLEAVE_FILL", "WIDE_DOT_FILL", "CLOSE_DOT_FILL", "USER_FILL" };
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; struct fillsettingstype fillinfo; int maxx,maxy,style; char stylestr[40];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx()/2; midy = getmaxy()/2; for(style=EMPTY_FILL;style

Setftime

setftime
Функция Устанавливает дату и время создания файла.
Синтаксис #include
int setftime(int handle, struct ftime *ftimep);
Файл, содержащий io.h прототип
Описание setftime устанавливает время и дату файла, свя- занного с открытым дескриптором handle, в соот- ветствии с содержимым структуры ftime.
Структура ftime определена следующим образом:
struct ftime { unsigned ft_tsec:5; /* по две сек.*/ unsigned ft_min:6; /* минуты */ unsigned ft_hour:5; /* часы */ unsigned ft_day:5; /* день */ unsigned ft_month:4; /* месяц */ unsigned ft_year:7; /* год-1980 */ };
Возвращаемое При успешном завершении setftime возвращает 0. значение Если произошла ошибка, она возвращает -1 и гло- бальной переменной errno присваивает одно из сле- дующих значений:
EINVFNC - Неверный номер функции; EBADF - Неверный номер файла.
Переносимость setftime уникальна для DOS.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { struct ftime filet; FILE *fp; if((fp=fopen("TEST.$$$","w")) == NULL) { perror("Ошибка:"); exit(1); } fprintf(fp,"Тестирование...\n"); filet.ft_tsec = 1; filet.ft_min = 1; filet.ft_hour = 1; filet.ft_day = 1; filet.ft_month = 1; filet.ft_year = 21; system("dir TEST.$$$"); setftime(fileno(fp),&filet); system("dir TEST.$$$"); fclose(fp); unlink("TEST.$$$"); return 0; }

Setgraph

setgraphmode
Функция Переводит систему в графический режим, очищает экран.
Синтаксис #include
void far setgraphmode(int mode);
Файл, содержащий graphics.h прототип
Описание setgraphmode выбирает графический режим отличный от установленного по умолчанию функцией initgraph. mode должен быть режимом, допустимым для используемого драйвера. setgraphmode очищает экран и устанавливает все графические величины в значение по умолчанию (CP, палитра, цвет, окно и т.д.).
Вы можете использовать setgraphmode совместно с restorecrtmode для переключения между графическим и текстовым режимами.
Возвращаемое Если вы задаете setgraphmode несуществующий значение для используемого драйвера режим, то graph- result вернет значение -10 (grInvalidMode).
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int x,y;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } x = getmaxx()/2; y = getmaxy()/2; /* вывести сообщение */ settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(x,y,"Press any key to exit graphics..."); getch(); /* перевести систему в текстовый режим */ restorecrtmode(); printf("Мы в текстовом режиме\n"); printf("Для возврата в графический режим нажмите клавишу.\n"); getch(); /* возврат в графический режим */ setgraphmode(getgraphmode());
/* вывести сообщение */ settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(x,y,"We're back in graphics mode..."); outtextxy(x,y+textheight("W"),"Press any key to halt...");
/* очистка */ getch(); closegraph(); return 0; }

Setjmp

setjmp
Функция Устанавливает нелокальный переход.
Синтаксис #include
int setjmp(jmp_buf jmpb);
Файл, содержащий setjmp.h прототип
Описание setjmp захватывает состояние задачи в jmpb и воз- вращает 0.
Последующий вызов longjmp восстанавливает состоя- ние задачи из jmpb и возвращается также как и setjmp со значением val.
Cостояние задачи представляет собой следующее:
- все сегментные регистры (CX,DS,ES,SS); - переменные-регистры (SI,DI); - указатель стека (SP); - указатель базы (BP); - флаги.
Состояние задачи является достаточно полным, так что функции setjmp и longjmp могут быть использо- ваны как инструмент для организации сопрограмм.
Перед использованием функции longjmp необходимо вызвать функцию setjmp. Программа вызывающая setjmp и устанавливающая jmpb должна оставаться активной и не должна возвращать управления до вы- зова longjmp. Если это случится, то результат непредсказуем.
Данные подпрограммы могут быть полезны для работы с ошибками и исключительными ситуациями, происхо- дящими в низкоуровневых подпрограммах прикладных программ.
Примечание. Функции setjmp и longjmp нельзя ис- пользовать для реализации оверлейных программ. Обычно setjmp и longjmp сохраняют и восстананав- ливают все, необходимые для реализации сопрог- рамм, однако для управления оверлеями необходимо следить за стеком, причем подразумевается, что стек один. При реализации сопрограмм вы обычно используете два стека, или две части одного сте- ка, и поэтому администратор оверлеев не сможет корректно их отслеживать.
Вы можете иметь задачи, работающие в фоновом ре- жиме, которые используют свой стек, или свой раз- дел общего стека, однако вы должны быть уверены, что они не используют оверлеев, и вы не должны использовать оверлейные версии setjmp и longjmp для переключения на эти фоновые задачи.
Возвращаемое setjmp возвращает 0 при начальном вызове. значение Если это вызов для возврата после longjmp, setjmp возвращает ненулевое значение (как в примере).
Переносимость Функция поддерживаются на системах UNIX и стандар- том ANSI C.
Смотрите также
Пример:
#include
#include
#include
void subroutine(void);
imp_buf jumper;
int main() { int value; value = setjmp(jumper); if (value != 0) { printf("longjmp со значением %d\n", value); exit(value); } printf("Вызов подпрограммы ... \n"); subroutine(); return 0; } void subroutine(void) { longjmp(jumper,l); }

Setlines

setlinestyle
Функция Устанавливает толщину и тип линии.
Синтаксис #include
void far setlinestyle(int linestyle, unsigned upattern, int thickness);
Файл, содержащий graphics.h прототип
Описание Устанавливает тип для всех линий, рисуемых функциями line, lineto, rectangle, drawpoly и т.д.
Структура linesettingstype определена в graphics.h следующим образом:
struct linesettingstype{ int linestyle; unsigned upattern; int thickness; };
linestyle определяет тип линий, который будет ис- пользоваться (непрерывная, пунктир, штрихпунктир, штриховая). Перечисленные line_styles, определен- ные в graphics.h, дают названия этим операциям: ------------------------------------------- Название Знач. Описание ------------------------------------------- SOLID_LINE 0 сплошная DOTTED_LINE 1 пунктир CENTER_LINE 2 штрихпунктир DASHED_LINE 3 штриховая USERBIT_LINE 4 тип линии, заданный пользователем ------------------------------------------- thickness определяет будут ли последующие линии тонкими или толстыми. ------------------------------------------- Название Знач. Описание ------------------------------------------- NORM_WIDTH 1 толшина в 1 пиксел THICK_WIDTH 3 толщина в 3 пиксела -------------------------------------------
upattern -это 16-битный шаблон, который использу- ется только когда linestyle равен USERBIT_LINE (4). В этом случае, каждый бит в шаблоне установ- ленный в 1, соответствует пикселю на линии в те- кущем цвете. Например, сплошной линии соответстс- вует upattern равный 0xFFFF (рисуются все пиксе- лы), а пунктиру соответствует upattern равный 0x3333 или 0x0F0F. Если же параметр linestyle в setlynestyle не равен USERBIT_LINE (!=4), то upattern поддерживается, но игнорируется.
Замечание. Параметр linestyle не работает при построении дуг, кругов, эллипсов и секторов. В этом случае используется пареметр thickness.
Возвращаемое Если в setlinestyle передается неправиль- значение ный ввод, graphresult возвратит -11, а теку- щий тип линии останется без изменений.

Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.

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

Пример:

#include

#include

#include

#include

/* имена поддерживаемых типов линий */ char lname[] = {"SOLID_LINE", "DOTTED_LINE", "CENTER_LINE", "DASHED_LINE", "USERBIT_LINE" };

int main(void) { /* Запрос автоопределения */

int graphdriver = DETECT, gmode, errorcode; int midx,midy,style,userpat; char stylestr[80];

/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx()/2; midy = getmaxy()/2; /* пользовательский шаблон: 1 (двоичный:0000000000000001) */ userpat = 1; for(style = SOLID_STYLE; style

Setlocal

setlocale
Функция Выбирает locale.
Синтаксис #include
char *setlocale(int category,char *locale);
Файл, содержащий locale.h прототип
Описание Turbo C++ в настоящее время поддерживает только "С" locale, поэтому вызов этой функции не будет иметь ни какого смысла.
Аргумент category может принимать следующие зна- чения:
LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY LC_NUMERIC LC_TIME
Возвращаемое Если выбор прошел удачно, то возвращается строка значение содержащая старое значение. При ошибке возвра- щается 0.
Переносимость setlocale поддерживается стандартом ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { char *old_locale; /* в Turbo C++ поддерживается только "C" */ old_locale = setlocale(LC_ALL,"C"); printf("Old locale was %s\n",old_locale); return 0; }

Setmem

setmem
Функция Присваивает значение всем байтам некоторой облас- ти памяти.
Синтаксис #include
void setmem(void *dest, unsigned len, char value);
Файл, содержащий mem.h прототип
Описание setmem присваивает всем байтам блока памяти с ад- ресом dest и длиной len значение value.
Возвращаемое Нет. значение
Переносимость setmem уникальна для микропроцессоров семейства 8086.
Смотрите также
Пример:
#include
#include
#include
int main(void) { char *dest; dest = calloc(21,sizeof(char)); setmem(dest,20,'c'); printf("%s\n",dest); return 0; }

Setmode

setmode
Функция Устанавливает режим открытия файла.
Синтаксис #include
int setmode(int handle, unsigned amode);
Файл, содержащий io.h прототип
Описание Функция setmode устанавливает режим открытия файла (либо бинарный, либо текстовый), соответствующего параметру handle. Аргумент amode принимает при этом значение либо O_BINARY, либо O_TEXT, но ни- когда вместе. (Эти символические константы опре- делены в файле fcntl.h)
Возвращаемое При успешном завершении функция setmode значение значение 0; в случае ошибки - значение -1, кроме того, гло- бальная переменная errno получает значение:
EINVAL - Неверный аргумент.
Переносимость Функция setmode поддерживается на системах UNIX.
Смотрите также
Пример:
#include
#include
#include
int main(void) { int result; result = setmode(fileno(stdprn),O_TEXT); if(result == -1) printf("Режим не допустим\n"); else printf("Режим установлен.\n"); return 0; }

Setpalet

setpalette
Функция Изменяет один цвет в палитре.
Синтаксис #include
void far setpalette(int colornum, int color);
Файл, содержащий graphics.h прототип
Описание setpalette устанавливает элемент colornum в color. Например, setpalette(0,5) изменяет пер- вый цвет текущей палитры (цвет фона) на цвет, имеющий код 5. Если size -это количество элемен- тов в текущей палитре, то colornum может изме- няться от 0 до (size -1).
Вы можете частично (либо целиком) поменять цвета в EGA/VGA палитре с помощью setpalette. На CGA же вы можете изменить лишь первый элемент палитры (colornum равен 0, цвет фона).
Элементы массива colors, используемые в setpalette, могут быть представлены ввиде симво- лических констант, определенных в graphics.h
----------------------------------------------------- Таблица доступных цветов ----------------------------------------------------- CGA EGA/VGA Имя Знач Имя Знач. ----------------------------------------------------- BLACK 0 EGA_BLACK 0 BLUE 1 EGA_BLUE 1 GREEN 2 EGA_GREEN 2 CYAN 3 EGA_CYAN 3 RED 4 EGA_RED 4 MAGENTA 5 EGA_MAGENTA 5 BROWN 6 EGA_LIGHTGRAY 7 LIGHTGRAY 7 EGA_BROWN 20 DARKGRAY 8 EGA_DARKGRAY 56 LIGHTBLUE 9 EGA_LIGHTBLUE 57 LIGHTGREEN 10 EGA_LIGHTGREEN 58 LIGHTCYAN 11 EGA_LIGHTCYAN 59 LIGHTRED 12 EGA_LIGHTRED 60 LIGHTMAGENTA 13 EGA_LIGHTMAGENTA 61 YELLOW 14 EGA_YELLOW 62 WHITE 15 EGA_WHITE 63 -----------------------------------------------------
Заметим, что цвета зависят от текущих графическо- го драйвера и графического режима.
Изменения, произведенные в палитре, сразу же от- ражаются на экране. При изменении цвета в палит- ре, все на экране, окрашенное в этот цвет, станет окрашенным в новый цвет.
Замечание. setpalette не может использоваться с драйвером IBM-8514.
Возвращаемое Если в setpalette передается ошибочное значение значение, graphresult возвратит -11(grError) а текущая палитра останется без изменений.
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int color,maxcolor,ht; int y=10; char msg[80];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } maxcolor = getmaxcolor(); ht = 2*textheight("W"); /* вывести цвета по умолчанию */ for(color=0;color

Setrgbpa

setrgbpalette
Функция Позволяет пользователю определять цвета для IBM 8514.
Синтаксис #include
void far setgbpalette(int colornum,int red, int green, int blue);
Файл, содержащий graphics.h прототип
Описание setgbpalette может использоваться с драйверами IBM8514 и VGA.
colornum определяет элемент палитры, который дол- жен быть загружен, а red, green и blue определяют цветовые составляющие элемента палитры.
Для дисплея IBM8514 (и VGA в цветном режиме 256К) colornum изменяется в интервале от 0 до 255. Для остальных режимов VGA colornum изменяется в ин- тервале от 0 до 15. Используется только младшие байты red, green и blue, и из байта лишь 6 наибо- лее значащих бит загружаются в палитру.
Замечание. Для совместимости с другими графичес- кими адаптерами IBM, драйвер BGI устанавливает первые 16 элементов палитры IBM8514 в цвета EGA/VGA, используемые по умолчанию. Эти значения могут использоваться без изменений, а могут изме- няться с помощью setrgbpalette.
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* выбор драйвера и режима, поддерживающих функцию setrgbpalette */ int graphdriver = VGA, gmode = VGAHI, errorcode; /* указатель на структуру описания политры */ struct palettetype pal; int i,ht,y,xmax;
/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } /* получить копию палитры */ getpalette(&pal); for(i=0;i

Settextj

settextjustify
Функция Устанавливает выравнивание текста для графических функций.
Синтаксис #include
void far settextjustify(int horiz,int vert);
Файл, содержащий graphics.h прототип
Описание Выводимый текст, после обращения к settext- justify будет выравнен горизантально или верти- кально относительно текущей позиции (СР). По умолчанию устанавливается выравнивание текста LEFT_TEXT (для горизонтального) и TOP_TEXT (для вертикального). Перечисленные в graphics.h text_just представляют собой имена для установки horiz и vert для передачи в settextjustify.
------------------------------------------- Название Знач. Описание ------------------------------------------- LEFT_TEXT 0 horiz CENTER_TEXT 1 horiz и vert RIGHT_TEXT 2 horiz BOTTOM_TEXT 0 vert TOP_TEXT 2 vert -------------------------------------------
Если horiz равно LEFT_TEXT и direction равно HORIZ_DIR, то элемент x CP продвигается с помощью textwidth(string) после вызова outtext(string).
settextjustify работает с текстами написанными функцией outtext и не может быть использована в текстовом режиме и с потокоориентированными функ- циями.
Возвращаемое Если в settextjustify передается неправильный значение ввод, то graphresult возвратит -11, а теку- щее выравнивание текста останется без изменений.
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
/* прототип функции */ void xat(int x,int y);
/* горизонтальное выравнивание текста */ char *hjust[] = {"LEFT_TEXT", "CENTER_TEXT", "RIGTH_TEXT"};
/* вертикальное выравнивание текста */ char *vjust[] = {"BOTTOM_TEXT", "CENTER_TEXT", "TOP_TEXT"};
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int midx,midy,hj,vj; char msg[80];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx()/2; midy = getmaxy()/2; /* цикл по выравниваниям */ for(hj=LEFT_TEXT;hj

Settexts

settextstyle
Функция Устанавливает текущие характеристики текста для графического вывода.
Синтаксис #include
void far settextstyle(int font,int direction, int charsize);
Файл, содержащий graphics.h прототип
Описание settextstyle устанавливает шрифт текста, направление отображения текста и размер символов. Вызов settextstyle действует для любых текстов, выводимых с помощью outtext и outtextxy.
Параметры font, direction и charsize, передавае- мые в settextstyle, описаны следующим образом:
font: допустимы: один шрифт с матрицей 8х8 бит и несколько "стилизованных" шрифтов. По умолчанию используется шрифт с матрицей 8х8 битов. Перечис- ленные font_names, определенные в graphics.h, оп- ределяют названия различных шрифтов( смотри таб- лицу): ------------------------------------------- Имя Знач. Описание ------------------------------------------- DEFAULT_FONT 0 шрифт 8х8 бит TRIPLEX_FONT 1 утроенный шрифт SMALL_FONT 2 малый шрифт SANSSERIF_FONT 3 шрифт sans-serif GOTHIC_FONT 4 готический шрифт -------------------------------------------
Битовый шрифт, используемый по умолчанию, встроен в графическую систему. Стилизованные шрифты хра- няться в дисковых файлах *.CHR и по одному могут храниться в памяти. Поэтому при выборе шрифта, отличного от загруженного в систему, необходимо загрузить соответствующий *.CHR-файл с диска. Для избежания этих загрузок при использовании нес- кольких шрифтов вы можете поместить шрифтовые файлы в вашу программу при компановки. Это осу- ществляется путем преобразования их в объектные файлы с помощью утилиты BGIOBJ и регистрации их через register- bgifont, как описано в файле UTIL.DOC, поставляемом вместе с Turbo C++. direction: поддерживается два направления - гори- зонтальный текст( слева направо) и вертикальный текст (повернут на 90 градусов против часовой стрелки). По умолчанию наравление равно HORIZ_DIR. ------------------------------------------- Имя Знач. Описание ------------------------------------------- HORIZ_DIR 0 слева направо VERT_DIR 1 снизу вверх ------------------------------------------- charsize: размер каждого символа может быть уве- личен фактором charsize. Значение charsize равное 0 используется только со стилизованными шрифтами, а ненулевое значение charsize можно использовать и с основным битовым шрифтом.

1) Если charsize равен 1, outtext и outtextxy будут отображать шрифтовую матрицу 8х8 бит в прямоугольник 8х8 пикселов на экра- не.

2) Если charsize равен 2, эта функция отоб- разит матрицу 8х8 бит в прямоугольник 16х16 пикселов на экране, и т.д.( до ограничения в 10 раз больше от нормального размера).

3) Когда charsize равен 0, функции вывода outtext и outtextxy увеличивают шрифт текста используя либо фактор увеличения символов(4) по умолчанию, либо размер шрифта определенный пользователем, используя setusercharsize.

Используйте также textheight и textwidth для оп- ределения размера шрифта.

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

Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.

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

Пример:

#include

#include

#include

#include

/* имена поддерживаемых шрифтов */ char *font[] = {"DEFAULT_FONT", "TRIPLEX_FONT", "SMALL_FONT", "SANS_SERIF_FONT", "GOTHIC_FONT" };

int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int style,midx,midy; int size=1;

/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx()/2; midy = getmaxy()/2; settextjustify(CENTER_TEXT,CENTER_TEXT); /* цикл по шрифтам */ for(style=DEFAULT_FONT;style

Settime

settime
Функция Устанавливает системное время.
Синтаксис #include
void settime(struct time *timep);
Файл, содержащий dos.h прототип
Описание settime устанавливает системное время в соответст- вии с содержимым структуры time, на которую ука- зывает параметр timep.
Структура time определена следующим образом:
struct time { unsigned char ti_min; /* минуты */ unsigned char ti_hour; /* часы */ unsigned char ti_hund; /* сотые доли сек */ unsigned char ti_sec; /* секунды */ };
Возвращаемое Нет. значение
Переносимость settime уникальна для DOS.
Смотрите также
Пример:
#include
#include
int main(void) { struct time t; gettime(&t); printf("минута: %d\n",t.ti_min); printf("час: %d\n",t.ti_hour); printf("сотые: %d\n",t.ti_hund); printf("секунды: %d\n",t.ti_sec); /* увеличить счетчик минут */ t.ti_min++; settime(&t); return 0; }

Setuserc

setusercharsize
Функция Позволяет пользователю изменять ширину и высоту символов для векторных шрифтов.
Синтаксис #include
void far setusercharsize(int multx,int divx, int multy,int divy);
Файл, содержащий graphics.h прототип
Описание setusercharsize позволяет вам управлять размером текста из векторных шрифтов, используе- мых графическими функциями. Значения установлен- ные функцией setusercharsize являются действи- тельными только если charsize, установленный ра- нее с помощью settextstyle, равен 0.
С помощью setusercharsize вы определяете факторы, по которым масштабируются ширина и высота. Ширина и высота, установленные по умолчанию, могут изме- няться в размерах с помощью multx:divx и multy:divy соответственно. Например, если необхо- димо сделать текст в два раза шире и на 50% выше, установите:
multx = 2; divx = 1; multy = 3; divy = 2;
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) {
/* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } /* выбрать тип шрифта */ settextstyle(TRIPLEX_FONT,HORIS_DIR,4) /* переместить CP на начальную позицию */ moveto(0,getmaxy()/2); /* вывести текст */ outtext("Norm "); /* сделать его в 1/3 нормальной высоты */ setusercharsize(1,3,1,1); outtext("Short "); /* сделать его в 3 раза больше нормальной ширины */ setusercharsize(3,1,1,1); outtext("Wide "); /* очистка */ getch(); closegraph(); return 0; }

Setvbuf

setvbuf
Функция Назначает буфер для потока stream.
Синтаксис #include
void setvbuf(FILE *stream, char *buf, int type, size_t size);
Файл, содержащий stdio.h прототип
Описание Функция setvbuf выделяет буфер buf для использова- ния в операциях ввода/вывода - вместо автомати- чески выделяемого буфера. Они вызываются только после того, как данный поток stream будет открыт.
При вызове функции setvbuf, если параметр buf = NULL, буфер будет выделен посредством malloc; па- раметр size будет определять объем выделенной па- мяти. Параметр size определяет размер буфера и должен быть больше нуля.
Замечание. Параметр size не должен превышать 32767.
Стандартный ввод и вывод stdin и stdout не ис- пользуют буферов, если они не были переназначены; в противном случае, ввод и вывод производиться с буферизацией.
unbuffered (небуферизованный ввод/вывод) означа- ет, что символы, записываемые в поток, поступают непосредственно в файл или на устройство; в то время как buffered (буферизованный ввод/вывод) означает, что символы накапливаются и затем запи- сываются, как блок.
Параметр type имеет одно из следующих значений:
_IOFBF Файл использует буферы полностью (fully buffered). Если буфер пуст, следующая операция ввода пытается заполнить буфер. Перед тем, как данные записываются в файл, выводной буфер дол- жен полностью заполниться.
_IOLBF Файл использует буферы построчно (line buffered). Когда буфер пуст, следующая операция ввода пытается его заполнить. Тем не менее, при выводе буфер будет сброшен, как только в файл бу- дет записан символ перехода на новую строку.
_IONBF Файл не использует буферов (unbuffered). Параметры buf и size игнорируются. Каждая операция ввода будет считывать данные непосредственно из файла, и каждая операция вывода будет записывать данные непосредственно в файл.
Наиболее распространенной причиной ошибки являет- ся размещение буфера, в качестве automatiс (ло- кальной) переменной и затем попытка закрыть файл до выхода из функции, в которой был объявлен бу- фер.

Возвращаемое Функция setvbuf при успешном завершении возвращает значение 0. Не нуль она возвращает, если параметры type или size имеют неверные значения; или если для разме- щения буфера нехватает памяти.

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

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

Пример:

#include

int main(void) { FILE *input, *output; char bufr[512]; input = fopen("file.in", "r"); output = fopen("file.out", "w"); /* указать минимальный доступ к диску и свой буфер */ if (setvbuf(input, bufp,_IOLBF, 512) != 0) printf("Ошибка, при определении буфера для входного файла\n"); else printf("Буфер определен\n"); /* определить для входного файла строчную буферизацию, и неявно определить буфер, который будет выделен, с помощью вызова функции malloc */ if (setvbuf(output, NULL,_IOLBF, 132) != 0) printf("Ошибка, при определении буфера для выходного файла\n"); else printf("Буфер определен\n"); /* ввод вывод */ /* закрыть файлы */ fclose(input); fclose(output); return 0; }

Setvect

setvect
Функция Устанавливает вектор прерывания.
Синтаксис void setvect(int intr_num, void interrupt(*isr) ());
Файл, содержащий dos.h прототип
Описание Каждый микропроцессор семейства 8086 включает на- бор векторов прерываний, с номерами от 0 до 255. Четырех байтовые значения каждого вектора в дейс- твительности представляют собой адреса программ обработки соответствующих прерываний. setvect устанавливает новую программу обработки прерывания с номером intr_num, передавая ее адрес в параметре isr. Адрес подпрограммы можно пере- дать только в том случае, если она объявлена как подпрограмма обработки прерывания (interrupt).
Примечание. Если вы используете прототипы, объяв- ленные в dos.h то вы можете просто посылать адрес подпрограммы обработки прерывания setvect в любой модели памяти.
Возвращаемое Нет. значение
Переносимсоть setvect уникальна для микропроцессоров семейства 8086.
Смотрите также
Пример:
/* Примечание: Это программа обработки прерываний. Вы должны компилировать данную программу с отключенной функцией проверки переполнения стека (Test Steck Overflow - off). */
#include
#include
#include
#define INTR 0X1C /* прерывание по таймеру */
void interrupt (*oldfunc)(); /* указатель на прерывание */ int count = 0;
void interrupt handler() { /* увеличить счетчик */ count ++; /* вызвать старый вектор */ oldfunc(); }
int main(void) { /* сохранить старый вектор */ oldfunc = getvect(INTR); /* установить новый вектор */ setvect(INTR,handler) /* ничего не делать */ while(count

Setverif

setverify
Функция Устанавливает состояние флага проверки DOS.
Синтаксис #include
void setverify(int value);
Файл, содержащий dos.h прототип
Описание setverify устанавливает значение флага проверки в соответствии с параметром value.
- value = 0 Флаг проверки сбрасывается; - value = 1 Флаг проверки устанавливается.
Флаг проверки определяет, будут ли проверяться операции записи на диск. Если флаг сброшен, то проверка не производится, если установлен, то все операции записи на диск проверяются.
Возвращаемое Нет. значение
Переносимость setverify уникальна для DOS.
Смотрите также
Пример:
#include
#include
#include
int main(void) { int verify_flag; printf("Для сброса флага нажмите '0'.\n"); printf("Для установки флага нажмите '1'.\n"); verify_flag = getch()-'0'; /* в оригинале getch(). прим. пер. */ setverify(); if(getverify()) printf("Флаг установлен. \n"); else printf("Флаг сброшен. \n"); return 0; }

Setviewp

setviewport
Функция Устанавливает область просмотра для графического вывода.
Синтаксис #include
void far setviewport(int left, int top, int right, int bottom,int clip);
Файл, содержащий graphics.h прототип
Описание setviewport устанавливает область просмотра для графического вывода.
Углы окна задаются в абсолютных координатах экра- на с помощью (left, top) и (right, buttom). Кур- сор перемещается в позицию (0,0) нового окна.
Параметр clip определяет будет ли отсекаться изображение, выходящее за границы окна. Если clip - ненулевое значение, то все линии, выходящие за границу окна будут отсекаться.
Возвращаемое Если в setviewport передается неверное значение, значение то graphresult возвращает -11, а текущие значения останутся без изменений.
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
#define CLIP_ON 1 /* активизации клиппирования в области просмотра */
int main(void)
{ /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } setcolor(getmaxcolor(1)); /* сообщение выводится в область просмотра, по умолчанию это весь экран */ outtextxy(0,0,"

Setvisua

setvisualpage
Функция Устанавливает номер видимой страницы графической памяти.
Синтаксис #include
void far setvisualpage(int page);
Файл, содержащий graphics.h прототип
Описание setvisualpage делает page видимой графической страницей.
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { /* Выбрать драйвер и режим, которые поддерживают несколько страниц */ int graphdriver = EGA, gmode = EGAHI, errorcode; int x,y,ht;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"\\tc");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } x = getmaxx() / 2; y = getmaxy() / 2; ht = textheight("W"); /* выбрать для вывода невидимую в настоящий момент страницу */ setactivepage(1); /* нарисовать на ней линию */ line(0,0,getmaxx(),getmaxy()); /* вывести сообщение на страницу #1 */ settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(x,y,"This is page #1"); outtextxy(x,y+ht,"Press any key to halt"); /* выбрать для вывода страницу 0 */ setactivepage(0); /* вывести текст на страницу 0 */ outtextxy(x,y,"This is page #0"); outtextxy(x,y+ht,"Press any key to view page #1"); getch(); /* сделать страницу 1 видимой */ setvisualpage(1);
/* очистка */ getch(); closegraph(); return 0; }

Setwrite

setwritemode
Функция Устанавливает режим для вывода вграфическом режиме.
Синтаксис #include
void far setwritemode(int mode);
Файл, содержащий graphics.h прототип
Описание Определены следующие константы:
COPY_PUT = 0 /* MOV */ XOR_PUT = 1 /* XOR */
Каждая константа связана с двоичной операцией, выполняемый над байтом в строке и соответствующим байтом на экране. COPY_PUT использует ассемблер- ную команду MOV для перзаписи строки независимо от того, что на экране. XOR_PUT использует коман- ду XOR для комбинирования содержимого строки и экрана. Две последовательно выполненные команды XOR приведут к уничтожению строки и восстановле- нию первоначального изображения на экране.
Замечание. setwritemode работает только с line, linerel, lineto, rectangle и drawpoly.
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
int main() { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int xmax,ymax;
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } xmax = getmaxx(); ymax = getmaxy(); /* выбрать режим XOR */ setwritemode(XOR_PUT); /* нарисовать линию */ line(0,0,xmax,ymax); getch(); /* стереть линию, нарисовав ее же, поверх существующей */ line(0,0,xmax,ymax); getch(); /* выбрать режим COPY */ setwritemode(COPY_PUT); /* нарисовать линию */ line(0,0,xmax,ymax); /* очистка */ getch(); closegraph(); return 0; }

Signal

signal
Функция Определяет действия по обработке сигналов.
Синтаксис #include
void (*signal(int sig, void (*func) (int sig [, int subcode])))(int);
Файл, содержащий signal.h прототип
Описание signal определяет как реагировать на сигнал, с но- мером sig. Вы можете загрузить свою программу об- работки сигнала или использовать две предопреде- ленные подпрограммы, описанные в signal.h. Это следующие: -------------------------------------------------- Номер ф-ции Значение -------------------------------------------------- SIG_DFG Завершить выполнение программы SIG_IGN Игнорировать сигнал этого типа SIG_ERR Определяет ошибку, возвращае- мую signal -------------------------------------------------- Имеются предопределенные типы сигналов: -------------------------------------------------- Тип сигнала Значение -------------------------------------------------- SIGABRT Ненормальное завершение. Действие по умолчанию эквивалентно _exit(3). SIGFPE Арифметическая ошибка, возникаю- щая при делении на 0, неверной операции и т.п. Действие по умолчанию эквивалентно _exit(1). SIGILL Неверная операция. Действие по умолчанию эквивалентно _exit(1). SIGINT Прерывание по Ctrl-C. Действие по умолчанию INT 23H. SIGSEGV Неверное обращение к памяти. Действие по умолчанию экви- валентно _exit(1). SIGTERM Требование завершения программы. Действие по умолчанию экви- валентно _exit(1). --------------------------------------------------
В signal.h определен тип, названный sig_atomic_t, максимальный целый тип, который процессор может автоматически запоминать при асинхронном прерыва- нии (для семейства 8086 это 16-ти битовое слово, целое значение для Turbo C++).
Когда функцией raise генерируется сигнал и в слу- чае внешнего события, то присходит следующее:
1. Если загружена программа пользователя для об- работки этого сигнала, то действие для сигнала устанавливается в SIG_DFL. 2. Вызывается подпрограмма пользователя для обра- ботки этого сигнала.
Подпрограмма пользователя может завершаться прос- тым return или abort, _exit, exit или longjmp.

В Turbo C++ введено расширение стандарта ANSI C, для сигналов типов SIGFPE, SIGSEGV и SIGILL. Пользовательская функция обработки сигнала вызы- вается с двумя или одним дополнительными парамет- рами. Если с помощью raise был выдан сигнал SIGFPE, SIGSEGV или SIGILL, то функция вызывается с одним дополнительным параметром, целым, опреде- ляющим что программа обработки сигнала вызвана. Точные активизационные значения для этих сигналов следующие (определены в float.h): -------------------------------------------------- Тип сигнала Активизационное значение -------------------------------------------------- SIGFPE FPE_EXPLICITGEN SIGSEGV SEGV_EXPLICITGEN SIGILL ILL__EXPLICITGEN --------------------------------------------------

Если вызывается SIGSPE при появлении исключитель- ной ситуации связанной с операциями над числами с плавающей точкой, то подпрограмма пользователя вызывается с дополнительным параметром определяю- щим FPE_xxx тип сигнала. Если вызываеются сигналы SIGILL, SIGSEGV или целочисленный вариант SIGFPE (FPE_INTOVFLOW или FPE_INTDIV0), в результате ис- ключительной ситуации процессора, то программа обработки сигнала, определнная пользователем, вы- зывается с двумя параметрами:

1. Тип исключительной ситуации SIGFPE, SIGSEGV или SIGILL (смотри float.h, в котором приве- денв все типы). Первый параметр это обычный тип сигнала, определенный в ANSI C.

2. Целый указатель на программы обработки преры- вания, которая вызвала эту программу обработки сигналов. Он указывает на список регистров процессора, которые были сохранены при возник- новении исключительной ситуации. Регистры сох- раняют в том же порядке, что и параметры прог- рамм обработки прерываний: BP, DI, SI, DS, ES, DX, CX, BX, AX, IP, CS, FLAGS. Для изменения содержимого регистра при возврате управления, измените значение в этом списке. К примеру, для получения нового значения SI сделайте при- мерно следующее:

*((int*)list_pointer+2) = new_SI_value

Таким образом вы получаете доступ к регистрам. (Смотри пример 2).


Могут возникнуть или быть сгенерированы следующие типы сигналов. Они соответствуют исключительным ситуациям, которые может распознавать 8087, типа "Деление целого на 0" и "переполнение при преры- вании". Они объявлены в файле float.h -------------------------------------------------- Сигнал SIGFPE Значение -------------------------------------------------- FPE_INTOVFLOW Запущен INTO с установленным флагом OF FPE_INTDIV0 Деление целого на 0 FPE_INVALID Неверная операция FPE_ZERODIVADE Деление на 0 FPE_UNDERFLOW Выход за нижнюю границу FPE_OVERFLOW Переполнение FPE_INEXACT Точность FPE_EXPLICITGEN Запускается программа пользова- теля raise(SIGFPE) --------------------------------------------------

Замечание: сигналы FPE_INTOVFLOW и FPE_INTDIV0 генерируются при целочисленных операциях, а ос- тальные при операциях над числами с плавающей точкой. Исключительные ситуации при работе с чис- лами с плавающей точкой генерируются в зависимос- ти от слова управления сопроцессором, которое можно изменить с помощью _control87. Ненормальные ситуации обрабатываются Turbo C++ и не передаются программе обработки сигналов.

Могут появиться следующие сигналы SIGSEGV: -------------------------------------------------- Сигнал SIGSEGV Значение -------------------------------------------------- SEGV_BOUND Выход за границы SEGV_EXPLICITGEN вызвана raise(SIGSEGV) --------------------------------------------------

Замечание: Процессоры 8088 и 8086 не имеют коман- ды bound. 186, 286, 386 и NEC V серии имеют эту команду. Т.о. при работе с 8088 и 8086 сигнал SEGV_BOUND возникнуть не может. Turbo C++ не ис- пользует эти команды, однако они могут появиться во встроенном коде или в ассемблерных подпрограм- мах, с которыми ваша программа компонуется.

Могут возникнуть следующие сигналы SIGILL:

-------------------------------------------------- Сигнал SIGILL Значение -------------------------------------------------- ILL_EXECUTION Попытка неверной операции ILL_EXPLICITGEN вызов raise(SIGILL) --------------------------------------------------


Замечание: 8088, 8086, NEC V20 и NEC V30 не имеют исключительной ситуации по неверной инструкции. 186, 286, 386, NEC V40 и NEC V50 имеют эту ситуа- цию. Т.о. при работе с процессорами 8088, 8086, NEC V20 и NEC V30 сигнал типа ILL_EXECUTION воз- никнуть не может.

Замечание. Если тип сигнала SIGFPE, SIGSEGV или SIGILL, то возврат из программы обработки сигнала не желателен, т.к. состояние 8087 нарушено, ре- зультат целочисленного деления неверен, возникло переполнение, граничная операция ошибочна, или была попытка выполнить несуществующую операцию. Возврат может происходить только в том случае, если программа обработки сигналов изменила регис- тры так, что существует корректный контекст возв- рата, или если сигнал был генерирован с помощью raise, напрмер FPE_EXPLICITGEN, SEGV_EXPLICITGEN или ILL_EXPLICITGEN. В основном, в этом случае нужно печатать сообщение и завершать выполнение программы с помощью _exit, exit или abort. Если возврат осуществляется при другом состоянии, то в этом случае результаты дальнейшей работы програм- мы непредсказуемы.

Возвращаемое При успешном завершении signal возвращае указатель значение на старую программу обработки сигнала для данного типа сигналов. При ошибке signal возвращает SIG_ERR и присваивает переменной errno значение EINVAR.

Переносимость signal поддерживается стандартом ANSI C.

Смотрите также 7,

Пример:

/* В этом примере загружается программа обработки сигнала, возникающего при нажатии Ctrl-Break */

#include

#include

#include

void Cather(int sig) { printf("\n Теперь программа обработки Break"); exit(1); }

int main(void) { signal(SIGINT,Cather); for(;;) printf("\n Сейчас основная программа \n"); }

Пример 2:

/* В этом примере загружается программа обработки сигналов SIGFPE, которая отлавливает состояние переполнения при выполнении целочисленных опе- раций, восстанавливает нормальное значение в АХ и возвращает управление */

#pragma inline #include

#include

void Catcher(int sig, int type, int *reglist) { printf("Поймал!\n"); *(reglist+8)=3; /* AX = 3 */ }

int main(void) { signal(SIGFPE,Catcher); asm mov ax,07FFFH /* AX = 32767 */ asm inc ax /* вызвать перепол- нение */ asm into /* активизировать программу */

/* при возврате управления программа обработки сигнала заносит в AX значение 3. Если этого не сделать, то в следующей операции опять вызовет into (после dec) */

asm dec ax /* нет перепол. */ asm into /* не активизир. */ }

Sin

sin
Функция Вычисляет синус.
Синтаксис Вещественная версия Комплексная версия #include #include
double sin(double x); complex sin(complex x);
Файл, содержащий Вещественная версия Комплексная версия прототип math.h complex.h
Описание sin вычисляет синус х. Угол задается в радианах.
Обработку ошибок для sin можно изменить с помошью функции matherr.
Синус комплексного числа определен следующим об- разом:
sin(z)=(exp(i*z)-exp(-i*z))/(2i)
Возвращаемое Вещественная версия sin возвращает значение в диа- значение пазоне от -1 до 1. Управление ошибками для этой функции можно изменить с помощью функции matherr.
Переносимость sin поддерживается в системах UNIX и определена в ANSI C. Комплексная версия требует С++ и скорее всего непереносима.
Смотрите также ,
Пример:
#include
#include
int main(void) { double result; double x = 0.5; result = sin(x); printf("Синус от %1f равен %1f\n",x,result); return 0; }

Sinh

sinh
Функция Вычисляет гиперболический синус.
Синтаксис Вещественная версия Комплексная версия #include #include
double sinh(double x); complex sinh(complex x);
Файл, содержащий Вещественная версия Комплексная версия прототип math.h complex.h
Описание Вычисляет гиперболический синус: (e^x-e^-x)/2.
Обработку ошибок для sinh можно изменить с по- мошью функции matherr.
Гиперболический синус комплексного числа опреде- лен следующим образом:
sinh(z)=(exp(z)-exp(-z))/2
Возвращаемое sinh возвращает гиперболический синус от x. значение В случае переполнения sinh возвращает значение HUGE_VAL с сответствующим знаком, и errno уста- навливается в ERANGE.
Переносимость sinh поддерживается в системах UNIX и определена в ANSI C. Комплексная версия требует С++ и скорее всего непереносима.
Смотрите также ,
Пример:
#include
#include
int main(void) { double result; double x = 0.5; result = sinh(x); printf("Гиперболический синус от %1f равен %1f\n",x,result); return 0; }

Sleep

sleep
Функция Замораживает выполнение программы на заданный интервал.
Синтаксис #include
void sleep(unsigened seconds);
Файл, содержащий dos.h прототип
Описание При вызове функции sleep выполнение программы замо- раживается на время (в секундах), заданное пара- метром seconds. Точность интервала соблюдается до сотых долей секунды, или ориентиром точности мо- гут служить внутренние "тики" DOS, в зависимости от того, что является более точным.
Возвращаемое Нет. значение
Переносимость Поддерживается на системах UNIX.
Смотрите также
Пример:
#include
#include
int main(void) { int i; for(i=1; i

Sopen

sopen
Функция Открывает разделяемый файл.
Синтаксис #include
#include
#include
#include
int sopen(char *path, int access, int shflag, int mode);
Файл, содержащий io.h прототип
Описание Функция sopen открывает файл, имя которого опреде- лено параметром path, и подготавливает его к пос- ледующим разделяемым операциям чтения и/или запи- си, в зависимости от параметров access, shflag и mode.
sopen это макро, определенное следующим образом:
open(path, (access) | (shflag), mode)
Для функции sopen параметр access конструируется путем логического побитового сложения флагов, пе- речисленных в двух следующих списках. Из первого списка может быть использован только один флаг; остальные флаги могут применяться в любых логи- ческих комбинациях.
Список 1: флаги чтения/записи.
O_RDONLY открытие только для чтения. O_WRONLY открытие только для записи. O_RDWR открытие для чтения и записи.
Список 2: остальные флаги доступа.
O_NDELAY Не используется; для совместимости с системой UNIX. O_APPEND Если флажок установлен, то перед каждой операцией записи, указатель файла бу- дет устанавливаться на конец файла. O_CREAT Если файл существует, этот флажок не имеет никакого значения. Если файл не существует, он будет создан, и биты из аргумента mode будут использованы для установки битов-атрибутов файла, как и в функции chmod. O_TRUNC Если файл существует, его длина усека- ется до 0. Атрибуты файла остаются не- изменными. O_EXCL Используется только вместе с O_CREAT. Если файл уже существует, то происходит возврат по ошибке. O_BINARY Данный флаг может быть установлен для гарантированного открытия файла в двоичном режиме. O_TEXT Данный флаг может быть установлен для гарантированного открытия файла в текс- товом режиме.
Эти константы (O_...) определены в файле fcntl.h.
Если ни O_BINARY, ни O_TEXT не указаны, файл отк- рывается в режиме трансляции, соответственно гло- бальной переменной _fmode.
Если в построении параметра access участвует флаг O_CREAT, вам необходимо указать аргумент mode из следующих символических констант, определенных в файле sys\stat.h. -------------------------------------------------- Значение параметра Возможности доступа mode -------------------------------------------------- S_IWRITE Разрешение на запись. S_IREAD Разрешение на чтение. S_IREAD/S_IWRITE Разрешение на чтение/запись. --------------------------------------------------

shflag определяет тип разделения файла, определя- емого параметром path. Символические константы для shflag определены в файле share.h. -------------------------------------------------- Значение shflag Что он делает -------------------------------------------------- SH_COMPAT Устанавливает режим совместимос- ти SH_DENYRW Запрещает доступ для чтения и записи SH_DENYWR Запрещает доступ для записи SH_DENYRD Запрещает доступ для чтения SH_DENYNONE Разрешает доступ для чтения и записи SH_DENYNO Разрешает доступ для чтения и записи --------------------------------------------------

Возвращаемое При успешном завершении sopen возвращает целое значение неотрицательное число handle - логический номер открытого файла. Указатель файла (указатель теку- щей позиции) устанавливается на начало файла. При ошибке функция возвращает значение -1, и перемен- ная errno получает одно из следующих значений:

ENOENT - Маршрут или имя файла не найдены; EMFILE - Слишком много открытых файлов; EACCES - Доступ запрещен; EINVACC - Неверный код доступа.

Переносимость Функция sopen поддерживается на системах UNIX. На версии 7 системы UNIX мнемоника O_тип не опре- делена. Система UNIX SYSTEM 3 пользуется всеми мнемониками O_тип за исключением O_BINARY.

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

Пример:

#include

#include

#include

#include

#include

#include

int main(void) { int handle; int status; handle = sopen("c:\\autoexec.bat",O_RDONLY,SH_DENYNO,S_IREAD); if(!handle) { printf("Ошибка sopen\n"); exit(1); } status = access("c:\\autoexec.bat",6); if(status == 0) printf("Разрешены чтение/запись\n"); else printf("Чтение/запись запрещены\n"); close(handle); return 0; }

Sound

sound
Функция Запускает встроенный динамик PC на генерацию зву- ка указанной частоты.
Синтаксис #include
void sound(unsigned frequency);
Файл, содержащий dos.h прототип
Описание sound запускает встроенный динамик на генерацию звука указанной частоты. Частота определяется па- раметром frequency (в Герцах, т.е. циклах в се- кунду). Для выключения динамика, включенного фун- кцией sound, воспользуйтесь функцией nosound.
Переносимость sound работает только на компьютерах, совместимых с IBM PC. Соответствующая функция есть в Turbo Pascal.
Смотрите также
Пример:
/* Звук частотой 7 Гц в течении 10 секунд Возможно ваш РС не способен генерировать такой звук */
int main(void) { sound(7); delay(10000); nosound(); }

Spawn

spawn
Функция Создает и запускает дочерний процесс.
Синтаксис #include
#include
int spawnl(int mode, char *pathname, char *arg0, arg1,...,argn, NULL); int spawnle(int mode, char *pathname, char *arg0, arg1,...,argn, NULL); int spawnlp(int mode, char *pathname, char *arg0, arg1,...,argn, NULL); int spawnlpe(int mode, char *pathname, char *arg0, arg1,...,NULL, char *envp[]); int spawnv(int mode, char *pathname, char*argv[]); int spawnve(int mode, char *pathname, char *argv[], char *envp[]); int spawnvp(int mode, char *pathname, char *argv[]); int spawnvpe(int mode, char *pathname, char *argv[], char * envp[]);
Файл, содержащий process.h прототип
Описание Функции семейства spawn... создают и запускают другие программные файлы, известные под названием "дочерний процесс". Для загрузки и выполнения до- чернего процесса должно быть достаточно памяти.
Значение параметра mode влияет на то, каким обра- зом материнский процесс продолжит свои действия после вызова функции spawn... . Далее перечислены возможные значения аргумента mode:
P_WAIT Ставит родительский процесс в состояние ожидания до тех пор, пока дочерний процесс не завершится.
P_NOWAIT Продолжает работу родительского процесса одновременно с работой дочернего процес- са.
P_OVERLAY Перекрывает дочерним процессом область памяти первоначально занятую родитель- ким процессом. Работает аналогично вы- зову функции exec... .
Примечание. Значение P_NOWAIT в данной версии не поддерживается; использование его приведет к ошибке.
Аргумент pathname представляет собой имя файла дочернего процесса. Функции семейства spawn... осуществляют поиск файла с данным именем, пользу- ясь следующим стандартным алгоритмом DOS:
- Нет расширения или нет точки; осуществляется поиск по точному имени файла, если по такому имени файл не найден, добавляется .COM, и поиск производится снова, если опять не найден, то добавляет .EXE и поиск повторяется;
- Расширение имени присутствует; поиск произво- дится только по точному имени файла;

- Точка присутствует; поиск производится только по имени файла - без расширения.

- Если path не содержит имени директории, то фун- кции spawn... с суффиксом p производят поиск в текущей директории, а затем в директориях, ука- занных в переменной окружения PATH.

Суффиксы, добавляемые к имени функции spawn... (l, v, p, e) отражают некоторые особенности рабо- ты функций:

p - означает, что функция будет искать дочерний процесс в директориях, определяемых перемен- ной операционной среды системы DOS-PATH. Без задания суффикса p функция будет искать файл только в текущей рабочей директории.

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

v - означает, что аргументы-указатели передаются в виде массива указателей: argv[0], ...argv[n]. Обычно суффикс v употребляется при переменном числе аргументов.

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

Каждая функция семейства spawn... должна иметь один из двух суффиксов l или v. Суффиксы p и e необязательны.

Например:

- функция с именем spawnl - это функция семейства spawn..., принимающая отдельные аргументы, осу- ществляющая поиск файла дочернего процесса в корневой или рабочей директории и передающей дочернему процессу операционную среду родитель- ского процесса.

- Функция spawnvpe - это функция семейства spawn..., которая принимает массив аргумен- тов-указателей, применяет параметр среды PATH для поиска файла дочернего процесса и передает ему параметр envp, позволяющий ему изменить свою операционную среду.

Функции семейства spawn... должны передавать до- чернему процессу по крайней мере один аргумент (arg0 или argv[0]). По соглашению данным аргумен- том является копия параметра pathname. (Использо- вание для данного нулевого аргумента других зна- чений не вызовет ошибку). В версиях операционной системы DOS 3.0 и выше поддерживается аргумент pathname. В более ранних версиях не может использоваться значение нулевого аргумента (arg0 или argv[0]).


При использовании суффикса l arg0 обычно адресует pathname, а остальные аргументы arg1,...,argn яв- ляется указателями на символьные строки, реально составляющие список аргументов. Обязательный ад- ресный нуль NULL завершает список аргументов.

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

envvar = value,

где envvar - это имя переменной операционной сре- ды, а value - это строковое, значение, присваива- емое переменной envvar. Последним элементом мас- сива envp[] является NULL. Когда envp[0] равно NULL, дочерний процесс наследует назначения среды родительского процесса.

Общая длина списка arg0+arg1+...+argn (или argv[0]+argv[1]+...+argv[n]), включая пробелы, разделяющие аргументы, должна быть

#include

#include

int main(void) { int result; clrscr(); result = spawnl(P_WAIT,"tcc.exe",NULL); if(result==-1) { perror("Ошибка spawnl"); exit(1); } return 0; }

Пример 2:

#include

#include

#include

int main(void) { int result; clrscr(); result = spawnle(P_WAIT,"tcc.exe",NULL,NULL); if(result==-1) { perror("Ошибка spawnle"); exit(1); } return 0; }

Sprintf

sprintf
Функция Производит форматированный вывод в строку.
Синтаксис #include
int sprintf(char *buffer, const char *format[, argument,...]);
Файл, содержащий stdio.h прототип
Описание sprintf получает набор аргументов, применяет к каждому спецификацию формата, содержащуюся в строке формата (format) и выводит сформатирован- ные данные в строку.
sprintf применяет к первому аргументу первую спе- цификацию формата, ко второму - вторую, и т.д. Число спецификаций формата должно соответствовать числу аргументов.
Описание спецификаций формата приведено в разделе посвященном функции printf.
Возвращаемое sprintf возвращает число выведенных байт. Завер- значение шающий нулевой байт не считается. При возникнове- нии ошибки sprintf возвращает EOF.
Переносимость sprintf поддерживается в системах UNIX и стандар- том ANSI C. Определена в стандарте Kernighan & Ritchie.
Смотрите также
Пример:
#include
#include
int main(void) { char buffer[80]; sprintf(buffer,"Аппроксимация Pi = %f\n",M_PI); puts(buffer); return 0; }

Sqrt

sqrt
Функция Для вещественного аргумента вычисляет квадратный корень.
Синтаксис Вещественная версия Комплексная версия #include #include
double sqrt(double x); complex sqrt(complex x);
Файл, содержащий Вещественная версия Комплексная версия прототип math.h complex.h
Описание sqrt вычисляет положительный квадратный корень от параметра x.
Обработку ошибок для sqrt можно изменить с по- мощью функции matherr.
Для комплексного числа x, sqrt(x) дает комплекс- ный корень, чей аргумент arg, это arg(x)/2;
Комплексный квадратный корень определяется следу- ющим образом:
sqrt(z)=sqrt(abs(z))(cos(arg(z)/2)+isin(arg(z)/2))
Возвращаемое При успешном завершении sqrt возвращает вычислен- значение ное значение: положительный квадратный корень от x.
Если x отрицательно, то переменной errno присваи- вается значение:
EDOM - Ошибка области определения
и возвращает значение 0.
Переносимость sqrt поддерживается в системах UNIX и определена в ANSI C. Комплексная версия требует С++ и непере- носима.
Смотрите также
Пример:
#include
#include
int main(void) { double result; double x = 0.4; result = sqrt(x); printf("Корень квадратный от %1f равен %1f\n",x,result); return 0; }

Srand

srand
Функция Инициализирует генератор случайных чисел.
Синтаксис #include
void srand(unsigned seed);
Файл, содержащий stdlib.h прототип
Описание Генератор случайных чисел инициализируется с по- мощью вызова функции srand с аргументом 1. Уста- новить новую начальную точку можно указав в ка- честаргумента соответствующее значение.
Возвращаемое Нет. значение
Переносимость srand доступна в системах UNIX и поддерживается стандартом ANSI C.
Смотрите также
Пример:
#include
#include
#include
int main(void) { int i; time_t t; srand((unsigned)time(&t)); printf("10 случайных чисел от 0 до 99 \n\n"); for (i=0; i

Sscanf

sscanf
Функция Выполняет форматированный ввод из строки.
Синтаксис #include
int sscanf(const char *buffer, const char *format[, adress,...]);
Файл, содержащий stdio.h прототип
Описание Функция sscanf просматривает набор входных полей, по одному символу, считывая их из строки. Затем каждое поле форматируется в соответствии со спе- цификацией формата, посылаемой sscanf через аргу- мент format. В конце sscanf сохраняет введенные отформатированные поля по адресам, посылаемым в качестве аргументов после format. Число аргумен- тов должно соответствовать числу спецификаций формата.
Описание спецификаций формата приведено в разделе посвященном функции scanf.
sscanf заканчивает просмотр поля перед достижени- ем нормального символа конца поля (пробелб, табу- ляция) или вообще окончить просмотр строки по не- которым причинам. Смотри scanf.
Возвращаемое sscanf возвращает число, соответствующее числу ус- значение пешно обработанных полей, это число не включает в себя поля, которые былы обработаны но не сохране- ны.При попытке чтения за концом строки sscanf возвращает EOF. Если ни одно поле не было сохра- нено, то функция возвращает 0.
Переносимость sscanf доступна в системах UNIX и поддерживается стандартом ANSI C. Она определена в Керниган и Ричи.
Смотрите также
Пример:
#include
char buffer[] = "a 3.14159 12 a-string\n";
int main(void) { char ch; float f; int i; char string[20]; sscanf(buffer,"%c %f %d %s",&ch,&f,&i,string); printf("%c %f %i %s",ch,f,i,string); return 0; }

Stat

stat
Функция Получает информацию о файле.
Синтаксис #inslude
int stat(char *path, struct stat *buff);
Файл, содержащий sys\stat.h прототип
Описание Функция stat записывает информацию о файле (или директории) в структуре stat.
Аргумент buff адресует структуру stat (определен- ную в файле sys\stat.h). Структура содержит сле- дующие поля:
st_mode битовая маска, дающая информацию о режиме открытия файла.
st_dev идентификатор дисковода содержащего файл.
st_rdev также, как и st_dev.
st_nlink присваевается целая константа 1.
st_size размер открытого файла в байтах.
st_atime ближайшее время открытия файла, во время которого он был модифицирован.
st_mtime также, как и st_atime.
st_ctime также, как и st_atime.
Структура stat содержит на три поля больше, чем перечислено выше, но они содержат данные, которые под управлением MS-DOS не имеют значения.
Битовая маска, дающая информацию о режиме откры- того файла, содержит следующие биты:
Один из следующих битов должен быть выставлен:
/* прим. пер. в S_IFCHR установлен, если параметр handle указывает оригинале нет: */ на устройство (fstat);
S_IFREG установлен, если обычный файл определяет- ся параметром handle (fstat),или парамет- ром path (stat).
S_IFDIR установлен, если параметр path определяет директорию (stat);
Один или оба следующих бита должны быть выставле- ны:
S_IWRITE установлен, если пользователь имеет раз- решение на запись;
S_IREAD установлен, если пользователь имеет раз- решение на чтение.
Для функции stat битовая маска содержит также би- ты пользовательского выполнения; они устанавлива- ются в соответствии с расширением имени открытого файла. Битовая маска также имеет биты чтения/за- писи, они устанавливаются в соответствии с режи- мом доступа к файлу.
Возвращаемое Если информация об открытом файле была успешно по- значение лучена, функция возвращает 0. В случае ошибки (невозможно получить информацию), функция возвра- щает значение -1 и устанавливает переменную errno.

ENOENT - Файл или маршрут не найдены.

Переносимость stat доступна в системах UNIX и поддерживается стандартом ANSI C.

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

Пример:

#include

#include

#include

#define FILENAME "TEST.$$$"

int main(void) { struct stat statbuf; FILE *stream; /* открыть файл для изменения */ if((stream = fopen(FILENAME,"w+")) == NULL) { fprintf(stderr,"Не могу открыть файл.\n"); return 1; } /* получить информацию о файле */ stat(FILENAME,&statbuf); fclose(stream); /* вывести полученную информацию */ if(statbuf.st_mode & S_IFCHR) printf("Это устройство\n"); if(statbuf.st_mode & S_IFREG) printf("Это файл\n"); if(statbuf.st_mode & S_IREAD) printf("Разрешение на чтение\n"); if(statbuf.st_mode & S_IWRITE) printf("Разрешение на запись"); printf("Метка диска:%c\n",'A'+statbuf.st_dev); printf("Размер в байтах: %ld\n",statbuf.st_size); printf("Время последнего открытия: %s\n", ctime(&statbuf.st_ctime)); return 0; }

Stime

stime
Функция Устанавливает системное время и дату.
Синтаксис #include
int stime (time_t *tp);
Файл, содержащий time.h прототип
Описание stime устанавливает системное время и дату. tp указывает на значение, содержащее число секунд, прошедшее с 1 января 1970, по Гринвичискому мери- диану.
Возвращаемое stime возвращает 0. значение
Переносимость stime доступна в системах UNIX.
Смотрите также
Пример:
#include
#include
#include
int main(void) { time_t t; struct tm *area; t = time(NULL); area = localtime(&t); printf("Секунд с 1970 года: %ld\n",t); printf("Местное время %s",asctime(area)); t++; area = localtime(&t); printf("Добавили секунду: %s",asctime(area)); t += 60; area = localtime(&t); printf("Добавили минуту: %s",asctime(area)); t += 3600; area = localtime(&t); printf("Добавили час: %s",asctime(area)); t += 86400L; area = localtime(&t); printf("Добавили сутки: %s",asctime(area)); t += 2592000L; area = localtime(&t); printf("Добавили месяц: %s",asctime(area)); t += 31536000L; area = localtime(&t); printf("Добавили год: %s",asctime(area)); return 0; }

Stpcpy

stpcpy
Функция Функция stpcpy копирует одну символьную строку в другую.
Синтаксис #include
char *stpcpy(char *dest, const char *src);
Файл, содержащий string.h прототип
Описание stpcpy копирует строку src в строку dest вплоть до нулевого символа окончания строки.
Возвращаемое stpcpy возвращает dest + strlen(src). значение
Переносимость stpcpy поддерживается на системах UNIX.
Пример:
#include
#include
int main(void) { char string[10]; char *strl = "abcdefghi"; stpcpy(string,strl); printf("%s\n",string); return 0; }

Strcat

strcat
Функция Добавляет одну строку к другой.
Синтаксис #include
char *strcat(char *dest, char *src);
Файл, содержащий string.h прототип
Описание strcat добавляет копию одной строки к другой.
Возвращаемое strcat возвращает указатель на соединенные значение строки.
Переносимость strcat поддерживается на системах UNIX и совме- стимых с ANSI C. Она описана в Kernighan и Ritchie.
Пример:
#include
#include
int main(void) { char destination[25]; char *blank = " ", *c = "C++", *turbo = "Turbo"; strcpy(destination,turbo); strcpy(destination,blank); strcpy(destination,c); printf("%s\n",destination); return 0; }

Strchr

strchr
Функция Ищет в строке первое появление данного символа.
Синтаксис #include
char *strchr(const char *s, int c);
Файл, содержащий string.h прототип
Описание strchr просматривает строку (с начала вперед), производя поиск на заданный символ. Функция strchr реагирует на первое появление символа c в строке s. Нулевое окончание считается частью строки, таким образом, в примере:
strchr(strs,0)
в качестве результата функции возвращается указа- тель на нулевое окончание в строке "strs".
Возвращаемое strchr возвращает указатель на первый встретив- значение шийся в строке str символ ch; если символ ch не появляется в строке str, функция strchr возвраща- ет нуль (NULL).
Переносимость strchr поддерживается на системах UNIX и совме- стимых с ANSI C. Она описана в Kernighan и Ritchie.
Смотрите также
Пример:
#include
#include
int main(void) { char string[15]; char *ptr, c = 'r'; strcpy(string,"This is a string"); ptr = strchr(string,c); if(ptr) printf("Символ %c в позиции %d\n",c,ptr-string); else printf("Символ не найден\n"); return 0; }

Strcmp

strcmp
Функция Сравнивает одну строку с другой.
Синтаксис #include
int strcmp(char *s1, const char *s2);
Файл, содержащий string.h прототип
Описание strncmp выполняет беззнаковое сравнение строк s1 и s2, начиная с первого символа в каждой строке и продолжая сравнение последующих символов до тех пор, пока не встретятся несовпадающие символы или строки не кончатся.
Возвращаемое strcmp возвращает следующие значения: значение < 0 если s1 меньше s2 ==0 если s1 равно s2 > 0 если s1 больше s2
Переносимость strcmp поддерживается на системах UNIX и совме- стимых с ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc"; int ptr; ptr = strcmp(buf2,buf1); if(ptr>0) printf("buf2 больше чем buf1\n"); else printf("buf2 меньше чем buf1\n"); ptr = strcmp(buf2,buf2); if(ptr>0) printf("buf2 больше чем buf3\n"); else printf("buf2 меньше чем buf3\n"); return 0; }

Strcmpi

strcmpi
Функция Сравнивает строки str1 и str2 без различий ре- гистров.
Синтаксис #include
int strcmpi(const char *s1,const char *s2);
Файл, содержащий string.h прототип
Описание strcmpi выполняет беззнаковое сравнение строк s1 и s2 без различий регистров (анологично stricmp выполняемой как макрокоманда).
Она возвращает значения(0) в зависимости от результата сравнения s1 (или части ее) и s2 (или части ее).
Программа strcmpi анологична stricmp. strcmpi вы- полняется через макрокоманду в string.h и перево- дит вызов с strcmpi в stricmp. Следовательно, ес- ли вы хотите использовать strcmpi, вы должны включить файл string.h , чтобы сделать доступным макрокоманду. Эта макрокоманда совместима с дру- гими компиляторами С.
Возвращаемое strcmpi возвращает следующие значения: (int) значение < 0 если s1 меньше s2 ==0 если s1 равно s2 > 0 если s1 больше s2
Смотрите также
Пример:
#include
#include
int main(void) { char *buf1 = "BBB", *buf1 = "bbb"; int ptr; ptr = strcmpi(buf2,buf1); if(ptr>0) printf("buf2 больше чем buf1\n"); if(ptr==0) printf("buf2 равен buf1\n"); if(ptr

Strcoll

strcoll
Функция Сравнивает две строки.
Синтаксис #include
int strcoll(char *s1,char *s2);
Файл, содержащий string.h прототип
Описание strcoll выполняет сравнение строк s1 и s2 в соот- ветствии со списком, определяемом с помощью setlocale.
Возвращаемое strcoll возвращает следующие значения: значение < 0 если s1 меньше s2 ==0 если s1 равно s2 > 0 если s1 больше s2
Смотрите также
Пример:
#include
#include
int main(void) { char *two = "International"; char *one = "Borland"; int check; check = strcoll(one,two); if(check) printf("Строки равны\n"); if(check0) printf("%s идет перед %s\n",two,one); return 0; }

Strcpy

strcpy
Функция Копирует одну строку в другую.
Синтаксис #include
char *strcpy(char *dest, const char *src);
Файл, содержащий string.h прототип
Описание stpcpy копирует байты из строки src в строку destin и останавливается после передачи нулевого окончания.
Возвращаемое strcpy возвращает dest. значение
Переносимость strcpy поддерживается на системах UNIX и совме- стима с ANSI C.
Пример:
#include
#include
int main(void) { char string[10]; char *strl = "abcdefghi"; strcpy(string,strl); printf("%s\n",string); return 0; }

Strcspn

strcspn
Функция анализирует строку на первый сегмент, не содер- жащий любого подмножества из данного набора сим- волов.
Синтаксис include
size_t strcspn(const char*s1, const char*s2);
Файл, содержащий string.h прототип
Возвращаемое strcspn возвращает длину первого сегмента строки значение s1, который не содержит ни одного символа из имеющихся в строке s2.
Переносимость strcspn поддерживается на системах UNIX и совме- стима с ANSI C.
Смотрите также
Пример:
#include
#include
#include
int main(void) { char *string1 = "1234567890"; char *string2 = "747DC8"; int length; length = strcspn(string1,string2); printf("Строки пересекаются в позиции %d\n",length); return 0; }

Strdup

strdup
Функция Копирует строку по новому адресу в памяти.
Синтаксис #include
char *strdup(char *s);
Файл, содержащий string.h прототип
Описание Получает дубль строки str, выделяя пaмять с помощью функции malloc. Пространство, выделенное для копии имеет длину (strlen(str)+1) байтов. Пользователь несет ответственность за освобожде- ние памяти, отведенной для strdup, когда она бо- лее не нужна.
Возвращаемое Возвращает указатель на область памяти, значение содержащую дубль строки str, или NULL, если па- мять не может быть выделена.
Переносимость strdup поддерживается на системах UNIX.
Смотрите также
Пример:
#include
#include
#include
int main(void) { char *dup_str,*string = "abcde"; dup_str = strdup(string); printf("%s\n",dup_str); free(dup_str); return 0; }

Strerror

strerror
Функция Функция strerror возвращает указатель на строку сообщения об ошибке.
Синтаксис #include
char *strerror(int errnum);
Файл, содержащий string.h, stdio.h прототип
Описание sterror берет целый параметр errnum, номер ошиб- ки, и возвращает указатель на строку сообщения об ошибке, связанную с errnum.
Возвращаемое Функция sterror возвращает указатель на строку, в значение которой находится сконструированное сообщение. Строка строится в буфере типа static и перезапи- сывается при каждом вызове sterror.
Переносимость strerror совместима с ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { char *buffer; buffer = strerror(errno); printf("Ошибка %s\n",buffer); return 0; }

Strftime

strftime
Функция Форматирует для вывода время.
Синтаксис #include
size_t _cdecl strftime(char *s, size_t maxsize, const char *fmt, const struct tm *t);
Файл, содержащий time.h прототип
Описание strftime форматирует время, передаваемое в аргу- менте t в массив, передваемый в качестве аргумен- та s, в соответствии со спецификациями формата определяемыми в строке fmt. Строка формата состо- ит из набора обычных символов и директив, причем набор может быть нулевым. Аналогично printf ди- рективы состоят из символа '%', за которым следу- ет символ, определяющих подстановку, выполняемую в этом месте. Все обычные символы копируются без изменений. В s передается максимум maxsize симво- лов.
Возвращаемое strftime возвращет значение, определяющее число значение символов, помещенное в s. Если требуется помес- тить в s больше чем maxsize символов, то функция возвращает 0. -------------------------------------------------------------- Спецификатор Подстановка формата --------------------------------------------------------------- %% Символ %. %a Сокращенное название дня недели. %A Полное название дня недели. %b Сокращенное название месяца %B Полное название месяца. %c Дата и время. %d Число (01 до 31) из двух цифр. %H Час из двух цифр (00 - 23). %I Час из двух цифр (01 - 12). %j День года из трех цифр (001 - 366). %m Номер месяца из двух цифр. %M Минуты из двух цифр (00 - 59). %p AM или PM (до или после полудня). %S Секунды из двух цифр (00 - 59). %U Номер недели в году (Воскресенье первый день не- дели), (00 - 52). %w Номер дня недели, причем Воскресенье считается первым днем недели (0 - 6). %W Номер недели в году (Понедельник первый день не- дели), (00 - 52). %x Дата. %X Время. %y Год из двух цифр (без века: 00 - 99). %Y Год с веком. %Z Имя временной зоны, или ничего, если она не уста- новлена. --------------------------------------------------------------------
Переносимость strftime поддерживается стандартом ANSI C.
Смотрите также
Пример:
#include
#include
#include
int main(void)
{ struct tm *time_now; time_t secs_now; char str[80]; tzset(); time(&secs_now); time_now = localtime(&secs_now); strftime(str, 80, "Сейчас %M минут после %I (%Z) %A, %B, %d 19%y", time_now); printf("%s\n",str); return 0; }

Stricmp

stricmp
Функция Сравнивает две строки без различий регистров.
Синтаксис #include
int stricmp(const char *s1, const char *s2);
Файл, содержащий string.h прототип
Описание stricmp выполняет беззнаковое сравнение строк s1 и s2, начиная с первого символа в каждой строке и, продолжая сравнение последующих символов до тех пор пока не встретятся несовпадающие символы или не кончатся строки.
Сравнение не различает регистры.
Она возвращает значения(0) в зависимости от результата сравнения s1 (или части ее) и s2 (или части ее).
Программа stricmpi анологична strcmpi. strcmpi выполняется через макрокоманду в string.h и пере- водит вызов с strcmpi в stricmp. Следовательно, если вы хотите использовать strcmpi, вы должны включить файл string.h , чтобы сделать доступным макрокоманду.
Возвращаемое stricmp возвращает следующие значения: значение < 0 если s1 меньше s2 ==0 если s1 равно s2 > 0 если s1 больше s2
Пример:
#include
#include
int main(void) { char *buf1 = "BBB", *buf1 = "bbb"; int ptr; ptr = stricmp(buf2,buf1); if(ptr>0) printf("buf2 больше чем buf1\n"); if(ptr==0) printf("buf2 равен buf1\n"); if(ptr

Strlen

strlen
Функция Вычисляет длину строки.
Синтаксис #include ; size_t strlen(const char *s);
Файл, содержащий string.h прототип
Описание strlen вычисляет длину строки s.
Возвращаемое strlen возвращает число символов в строке str, не значение считая нулевое окончание.
Переносимость strlen поддерживается на системах UNIX и опреде- лена в стандарте ANSI C.
Пример:
#include
#include
int main(void) { char *string = "Borland International"; printf("%d\n",strlen(string)); return 0; }

Strlwr

strlwr
Функция Преобразует буквы верхнего регистра в нижний ре- гистр.
Синтаксис #include
char *strlwr(char *s);
Файл, содержащий string.h прототип
Описание strlwr преобразует буквы верхнего регистра (A-Z) строки s в буквы нижнего регистра (a-z). Других изменений не происходит.
Возвращвемое strlwr возвращает указатель на строку s. значение
Переносимость strlwr уникальна для DOS.
Cмотрите также strupr.
Пример:
#include
#include
int main(void) { char *string = "Borland Internatinal"; printf("Строка до вызова strlwr: %s\n",string); strlwr(string); printf("Строка после вызова strlwr: %s\n",string); return 0; }

Strncat

strncat
Функция Добавляет часть одной строки к другой.
Синтаксис #include
char * strncat(char *dest, const char *src, size_t maxlen);
Файл, содержащий string.h прототип
Описание strncat копирует maxlen символов строки src в конец dest и затем добавляет нулевой символ. Мак- симальная длина результирующей строки strlen(dest)+maxlen.
Возвращаемое strncat возвращает dest. значение
Переносимость strncat поддерживается на системах UNIX и совме- стимых с ANSI C.
Пример:
#include
#include
int main(void) { char destination[25]; char *source = "States"; strcpy(destination,"United"); strncat(destination,source,7); printf("%s\n",destination); return 0; }

Strncmp

strncmp
Функция Сравнивает часть одной строки с частью другой.
Синтаксис #include
int strncmp(const char *s1, const char *s2, size_t maxlen);
Файл, содержащий string.h прототип
Описание strncmp делает то же самое сравнение, что и функ- ция strcmp, но просматривает только maxlen симво- лов. Она начинает с первого символа в каждой строке и продолжает сравнение до тех пор пока не обнаружит несовпадающие символы или просмотрит maxlen символов.
Возвращаемое Она возвращает значения(0) в зависимости от значение результата сравнения s1 (или части ее) и s2 (или части ее).
strncmp возвращает следующие значения: < 0 если s1 меньше s2 ==0 если s1 равно s2 > 0 если s1 больше s2
Переносимость strncmp поддерживается на системах UNIX и совме- стимых с ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { char *buf1 = "aaabbb", *buf2 = "bbbccc", *buf3 = "ccc"; int ptr; ptr = strncmp(buf2,buf1,3); if(ptr>0) printf("buf2 больше чем buf1\n"); else printf("buf2 меньше чем buf1\n"); ptr = strncmp(buf2,buf2,3); if(ptr>0) printf("buf2 больше чем buf3\n"); else printf("buf2 меньше чем buf3\n"); return 0; }

Strncmpi

strncmpi
Eint strcspn(char *str1, char *str2);F
Функция Сравнивает часть одной строки с частью другой без различий регистра.
Синтаксис #include
int strcmpi(const char *s1, const char *s2, size_t n);
Файл, содержащий string.h прототип
Описание strncmpi выполняет беззнаковое сравнение строк s1 и s2, максимальной длиной n байтов, начиная с первого символа в каждой строке и, продолжая сравнение последующих символов до тех пор пока не встретятся несовпадающие символы или не будет просмотрено n символов. Сравнение не чувствитель- но к регистрам. Функция strncmpi анологична strcmpi. strcmpi выполняется через макрокоманду, определенную в string.h и переводит вызов с strcmpi в stricmp. Следовательно, если вы хотите использовать strcmpi, вы должны включить файл string.h, чтобы сделать доступным макрокомнду. Эта макрокоманда совместима с другими компилято- рами С.
Возвращаемое strncmpi возвращает следующие значения: значение < 0 если s1 меньше s2 ==0 если s1 равно s2 > 0 если s1 больше s2
Пример:
#include
#include
int main(void) { char *buf1 = "BBBccc", *buf2 = "bbbccc"; int ptr; ptr = strncmpi(buf2,buf1,3); if(ptr>0) printf("buf2 больше чем buf1\n"); if(ptr

Strncpy

strncpy
Функция Копирует данное количество байтов из одной строки в другую с усечением или добавлением, если необ- ходимо.
Синтаксис #include
char *strncpy(char *dest, const char *src, int maxlen);
Файл, содержащий string.h прототип
Описание strncpy копирует точно maxlen символов из строки src в строку dest, если потребуется усекая или добавляя нули в dest. Целевая строка dest может не иметь нулевого окончания, если длина строки src - это maxlen или более.
Возвращвемое strncat возвращает dest. значение
Переносимость strncpy поддерживается на системах UNIX и совме- стимых с ANSI C.
Пример:
#include
#include
int main(void) { char string[10]; char *strl = "abcdefghi"; stpncpy(string,strl,3); printf("%s\n",string); return 0; }

Strnicpm

strnicpm
Функция Сравнивает часть одной строки с другой, без раз- личий регистров.
Синтаксис #include
int strnicmp(const char *s1, const char *s2, size_t maxlen);
Файл, содержащий string.h прототип
Описание strnicmp выполняет знаковое сравнение s1 и s2, максимально maxlen байт, начиная с первого симво- ла в каждой строке и, продолжая сравнение после- дующих символов до тех пор пока не встретятся не- совпадающие символы или не будет достигнут конец строки. Cравнение не чувствительно к регистрам. Она возвращает значения(0) в зависимости от результата сравнения s1 (или части ее) и s2 (или части ее).
Возвращаемое strnicmp возвращает следующие значения: значение < 0 если s1 меньше s2 ==0 если s1 равно s2 > 0 если s1 больше s2
Переносимость strnicmp уникальна для DOS.
Пример:
#include
#include
int main(void) { char *buf1 = "BBBccc", *buf2 = "bbbccc"; int ptr; ptr = strnicmp(buf2,buf1,3); if(ptr>0) printf("buf2 больше чем buf1\n"); if(ptr

Strnset

strnset
Функция Изменяет заданное число символов в строке на дан- ный символ.
Синтаксис #include
char *strnset(char *s,int ch, size_t n);
Файл, содержащий string.h прототип
Описание strnset копирует в первые n байт строки s символ ch. Если n>strlen(s), то strlen(str) получает значение n. Она заканчивается, когда n символов уже установлены, или когда найден нулевой символ.
Возвращвемое strnset возвращает s. значение
Переносимость strnset уникальна для DOS.
Пример:
#include
#include
int main(void) { char *string = "abcdefghijklmnopqrstuvwxyz"; char letter = 'x'; printf("Строка до strnset: %s\n",string); strnset(string,letter,13); printf("Строка после strnset: %s\n",string); return 0; }

Stroul

stroul
Функция strtoul преобразует строку в длинное беззнаковое целое значение по заданному основанию radix.
Синтаксис #include
unsigned long strtoul(const char *s, char **endptr,int radix);
Файл, содержащий stdlib.h прототип
Описание stroul анологична strol за исключением того, что она преобразует строку в беззнаковое длинное це- лое значение, а функция strol в длинное целое. Для более подробной информации обратитесь к опи- санию функции strol.
Возвращаемое stroul возвращает беззнаковое целое значение преоб- значение разованной строки или 0 в случае ошибки.
Переносимость strtoul совместима с ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { char *string = "87654321", *endptr; unsigned long lnumber; lnumber = strtoul(string,&endptr,10); printf("Строка: %s, число: %lu\n",string,lnumber); return 0; }

Strpbrk

strpbrk
Функция Ищет в строке первое появление любого символа из заданного набора.
Синтаксис #include
char *strpbrk(const char *s1, const char *s2);
Файл, содержащий string.h прототип
Описание strpbrk просматривает строку s1 в поисках перво- го появление любого символа, имеющегося в строке s2.
Возвращвемое strpbrk возвращает указатель на первое появление значение в строке s1 любого символа из строки s2, если таких символов в строке s1 нет, возвращается зна- чение NULL.
Переносимость strpbrk поддерживается на системах UNIX и совме- стимых с ANSI C.
Пример:
#include
#include
int main(void) { char *string1 = "abcdefghijklmnopqrstuvwxyz"; char *string2 = "onm"; char *ptr; strpbrk(string1,string2); if(ptr) printf("strpbrk нашла первый символ %c\n",*ptr); else printf("strpbrk не нашла символов в строке.\n"); return 0; }

Strrchr

strrchr
Функция Ищет в строке последнее появление данного символа.
Синтаксис #include
char *strrchr(char *s, int c);
Файл, содержащий string.h прототип
Описание Просматривает строку в обратном направлении, осу- ществляя поиск заданного символа. strrchr находит последнее появление символа c в строке s. Нулевой символ завершения строки считается частью строки.
Возвращаемое Возвращает указатель на последнее появле- значение ние символа c в строке str. Если символ c не найден, возвращается NULL.
Переносимость strrchr поддерживается на системах UNIX и совме- стимых с ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { char string[15]; char *ptr, c = 'r'; strcpy(string,"This is a string"); ptr = strrchr(string,c); if(ptr) printf("Символ %c в позиции %d\n",c,ptr-string); else printf("Символ не найден\n"); return 0; }

Strrev

strrev
Функция Обращает (переворачивает) строку.
Синтаксис #include
char *strrev(char *s);
Файл, содержащий string.h прототип
Описание strrev переворачивает (то есть записывает с конца в обратном порядке) все символы в строке, (исклю- чая нулевое окончание). (Например она изменит строку string\0 на строку gnirts\0).
Возвращаемое strrev возвращается указатель на перевернутую значение строку. Ошибочного завершения не бывает.
Переносимость strrev уникальна для DOS.
Пример:
#include
#include
int main(void) { char *forward = "string"; printf("Перед strrev: %s\n",forward); strrev(forward); printf("После strrev: %s\n",forward); return 0; }

Strset

strset
Функция Устанавливает все символы в строке s равными ука- занному символу.
Синтаксис #include
char *strset(char *s, int ch);
Файл, содержащий string.h прототип
Описание strset устанавливает все символы в строке s в символ ch. Она заканчивается, когда найден нуле- вой символ завершения строки.
Возвращвемое strset возвращает s. значение
Переносимость strset уникальна для DOS.
Смотрите также
Пример:
#include
#include
int main(void) { char string[10] = "123456789"; char symbol = 'c'; printf("Перед strset: %s\n",string); strset(string,symbol); printf("После strset: %s\n",string); return 0; }

Strspn

strspn
Функция Ищет в строке первый сегмент, являющийся подмно- жеством данного набора символов.
Синтаксис #include
size_t strspn(const char *s1, const char *s2);
Файл, содержащий string.h прототип
Описание strspn находит первый сегмент строки s1, который полностью состоит из символов строки s2.
Возвращаемое strspn возвращает длину первого сегмента строки значение s1, который целиком состоит из символов строки str2.
Переносимость strspn поддерживается на системах UNIX и совме- стима с ANSI C.
Пример:
#include
#include
#include
int main(void) { char *string1 = "1234567890"; char *string2 = "123DC8"; int length; length = strspn(string1,string2); printf("Строки отличаются с позиции: %d\n",length); return 0; }

Strstr

strstr
Функция Ищет в строке данную подстроку.
Синтаксис #include
char *strstr(const char *s1, const char *s2);
Файл, содержащий string.h прототип
Описание strstr просматривает s1 на первое появление подстроки s1.
Возвращаемое strstr возвращает указатель на элемент в s1, с значение которого начинается подстрока s2. (Указатель на s2 в s1). Если s1 не содержит s2, функция возвращает NULL.
Переносимость strstr поддерживается на системах UNIX и совме- стима с ANSI C.
Пример:
#include
#include
int main(void) { char *str1 = "Borland International", *str2 = "nation", *ptr; ptr = strstr(str1,str2); printf("Подстрока: %s\n",ptr); return 0; }

Strtod

strtod
Функция Преобразует строку в число двойной точности.
Синтаксис #include
double strtod(const char *s, char **endptr);
Файл, содержащий string.h прототип
Описание strtod преобразует символьную строку s в число двойной точности. Строка s - это последователь- ность символов, которая может быть интерпретиро- вана, как значение двойной точности; Символы дол- жны соответствовать следующему формату:
[ws] [sn] [ddd] [.] [ddd] [fmt[sn]ddd], где
[ws] - необязательный незначащий символ пробела; [sn] - необязательный знак (+ или -); [ddd] - необязательные цифры; [fmt] - необязательные символы e или E; [.] - необязательная десятичная точка.
strtod также распознает +INF и -INF как плюс и минус бесконечность, и +NAN и -NAN как не число.
В качестве примера ниже приведены некоторые сим- вольные строки, которые функция strtod может кон- вертировать в число двойной точности:
+1231.1981 е-1 502.85Е2 -2010.952
strtod прекращает чтение строки на первом встре- тившемся символе, который не может быть интерпре- тирован, как соответствующая часть числа двойной точности.
Если параметр endptr не NULL, функция strtod присваивает endptr указатель на символ, который остановил считывание (*endvar = &stopper). Этот параметр используется для обнаружения ошибок.
Возвращаемое strtod возвращает значение s как число значение двойной точности. В случае переполнения она возв- ращает положительное или отрицательное значение HUGE_VAL.
Переносимость strtod поддерживается на системах UNIX и совме- стима с ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { char input[80],*endptr; double value; printf("Введите число с плавающей точкой: "); gets(input); value = strtod(input,&endptr); printf("Строка: %s, число: %lf\n",input,value); return 0; }

Strtok

strtok
Функция Просматривает одну строку на лексемы, которые выделены ограничителями, определенными во второй строке;
Синтаксис #include
char * strtok(char *s1, const char *s2);
Файл, содержащий string.h прототип
Описание strtok рассматривает строку s1, как состоящую из последовательности из нуля или более лексем, вы- деленных с помощью символов из строки str2.
Первый вызов функции strtok возвращает указатель на первый символ первой лексемы в строке s1 и за- писывает нелевой символ в строку s1 непосредст- венно сразу за выделенной лексемой. Последующие вызовы со значением NULL в качестве первого аргу- мента будут обрабатывать строку s1 таким же обра- зом, пока не кончатся все лексемы.
Строка-разделитель s2 от вызова к вызову может меняться.
Возвращаемое strtok возвращает указатель на лексему, находящую- значение ся в s1. Когда закончатся все лексемы, содержащи- еся в строке s1, функция strtok возвратит нулевой указатель (NULL).
Переносимость strtok поддерживается на системах UNIX и совме- стима с ANSI C.
Пример:
#include
#include
int main(void) { char input[16] = "abc,d; char *p; /* strtok помещает нулевое окончание после лексемы */ p = strtok(input,","); if(p) printf("%s\n",p); /* второй вызов возвращает вторую лексему */ p = strtok(NULL,","); if(p) printf("%s\n",p); return 0; }

Strtol

strtol
Функция Преобразует строку в длинное целое значение.
Синтаксис #include
long strtol(const char *s, char **endptr, int radix);
Файл, содержащий stdlib.h прототип
Описание strtol преобразует символьную строку s к длино- му целому значению. Аргумент s - это последова- тельность символов, которые могут быть интерпре- тированы, как длинное целое; они должны соответс- твовать следующему формату:
[ws] [sn] [0] [x] [ddd] , где
[ws] - необязательный незначащий символ; [sn] - необязательный знак (+ или -); [0] - необязательный нуль (0); [x] - необязательный x или X. [ddd]- необязательные цифры.
strtol прекращает чтение строки на первом симво- ле, который нераспознан.
Если параметр radix лежит в пределах между 2 и 36, длинное целое число выражается по основанию radix. Если radix равно 0, первые несколько сим- волов строки s определяют основание преобразуемо- го значения.
Первый Второй Строка интепретируется, как символ символ 0 1-7 восьмеричное 0 x или X шестнадцатеричное 1-9 ---- десятичное
Если radix = 1, это будет считаться неверным зна- чением. Если radix36, это будет не- верным значением. Любое неверное значение для radix устанавливает результат в 0 и присваивает указателю на следующий символ *endptr - указатель на начало строки. Если подразумевается, что зна- чение s будет интерпретироваться, как восьмирич- ное, любой символ, кроме цифр от 0 до 7, не будет распознаваться. Если подразумевается, что значе- ние s будет интерпретироваться, как десятичное, любой символ, кроме цифр от 0 до 9, не будет рас- познаваться. Если значение s будет интерпретиро- ваться, как число по любому другому основанию, будут распознаваться только те цифры и буквы, ко- торые имеются в числах по данному основанию. (Например, если radix = 5, будут распознаваться только цифры от 0 до 4; если radix = 20, будут распознаваться цифры от 0 до 9 и буквы от А до J). Если endptr не ноль, strol устанавливает *endptr в указатель на символ, который завершает сканирование (*endptr = &stopper).
Возвращаемое strtol возвращает значение преобразованной строки значение или 0 в случае ошибки.
Переносимость strtol поддерживается на системах UNIX и совме- стима с ANSI C.
Смотри также Пример:
#include
#include
int main(void) { char *string = "87654321", *endptr; long lnumber; /* strtol преобразует строку к длинному целому */ lnumber = strtol(string,&endptr,10); printf("Строка: %s, число: %ld\n",string,lnumber); return 0; }

Strupr

strupr
Функция Преобразует буквы нижнего регистра строки в буквы верхнего регистра.
Синтаксис #include
char *strupr(char *s);
Файл, содержащий string.h прототип
Описание strupr преобразует буквы нижнего регистра в стро- ке s в буквы верхнего регистра. Других изменений не происходит.
Возвращаемое strupr возвращает s. значение
Переносимость strupr уникальна для DOS.
Смотрите также
Пример:
#include
#include
int main(void) { char *string = "abcdefghijklmnopqrstuvwxyz",*ptr; /* преобразовать в символы верхнего регистра */ ptr = strupr(string); printf("%s\n",ptr); return 0; }

Strxfrm

strxfrm
Функция Копирует часть строки.
Синтаксис #include
size_t strxfrm(char *s1,char *s2,size_t n);
Файл, содержащий string.h прототип
Описание strxfrm копирует не больше n символов из строки s2 в строку s1.
Возвращаемое Функция возвращает число скопированных байт. значение
Смотрите также
Пример:
#include
#include
#include
int main(void) { char *target; char *source = "Frank Borland"; int length; /* выделить место для строки */ target = calloc(80,sizeof(char)); /* скопировать в нее строку и получить ее длину */ length = strxfrm(target,source,80); printf("%s длиной %d байт\n",target,length); return 0; }

Swab

swab
Функция Функция swab осуществляет обмен байтами.
Синтаксис #include
void swab(char *from, char *to, int nbytes);
Файл, содержащий stdlib.h прототип
Описание Функция swab копирует nbytes байтов из строки from в строку to. Соответствующие четные и нечет- ные байты меняются местами. Эта операция бывает полезна для передачи данных из одной машины к другой с различным порядком байтов. Число nbytes должно быть четным.
Возвращаемое Нет. значение
Переносимость swab поддерживается на системах UNIX.
Пример:
#include
#include
char source[15] = "rFna koBlrna d"; char target[15];
int main(void) { swab(source,target,strlen(source)); printf("Результат: %s\n",target); return 0; }

System

system
Функция Функция system запускает команду DOS.
Синтаксис #include
int system(const char *command);
Файл, содержащий stdlib.h, process.h прототип
Описание Функция system вызывает файл DOS COMMAND.COM для выполнения команды DOS, командного файла или дру- гих программ вызываемах строкой command из выпол- няемой С программы.
Для поиска и выполнения программа обязательно должна находится в рабочей директории или в одной из директорий перечисленных в строке PATH.
Для поиска файла COMMAND.COM используется пере- менная среды COMSPEC, так что не требуется, чтобы файл COMMAND.COM обязательно находится в рабочей директории.
Возвращаемое Функция system возвращает 0 в случае успеха и -1 значение в случае ошибки.
Переносимость system поддерживается на системах UNIX и совме- стимых с ANSI C. Определена Керниганом и Ритчи.
Смотрите также Функции .., .. .
Пример:
#include
#include
int main(void) { printf("Запуск команды DOS.\n"); system("dir"); return 0; }

Описание функций Си

Tan

tan
Функция Вычисляет тангенс угла.
Синтаксис Вещественная версия Комплексная версия #include #include
double tan(double x); complex tan(complex x);
Файл, содержащий Вещественная версия Комплексная версия прототип math.h complex.h
Описание tan вычисляет тангенс. Углы определяются в радиа- нах.
Обработка ошибок для данной функции может быть модифицирована посредством функции matherr.
Коплексный тангенс определен следующим образом:
tan(z)=sin(z)/cos(z)
Возвращаемое Функция tan возвращает тангенс x, sin(x)/cos(x).
Переносимость tan поддерживается в системах UNIX и определена в ANSI C. Комплексная версия требует С++ и непере- носима.
Смотрите также ,
Пример:
#include
#include
int main(void) { double result; double x = 0.5; result = tan(x); printf("Тангенс от %1f равен %1f\n",x,result); return 0; }

Tanh

tanh
Функция Вычисляет гиперболический тангенс.
Синтаксис Вещественная версия Комплексная версия #include #include
double tanh(double x); complex tanh(complex x);
Файл, содержащий Вещественная версия Комплексная версия прототип math.h complex.h
Описание tanh вычисляет гиперболический тангенс sinh(x)/cos(h).
Обработка ошибок для данной функции может быть модифицирована посредством функции matherr.
Коплексный гиперболический тангенс определяется следующим образом:
tanh(z)=sibh(z)/cosh(z)
Возвращаемое Функция tanh возвращает гиперболический тангенс x.
Переносимость tanh поддерживается в системах UNIX и определена в ANSI C. Комплексная версия требует С++ и непере- носима.
Смотрите также
Пример:
#include
#include
int main(void) { double result; double x = 0.5; result = tanh(x); printf("Гиперболический тангенс от %1f равен %1f\n",x,result); return 0; }

Tell

tell
Функция Получает текущую позицию указателя файла.
Синтаксис #include
long tell(int handle);
Файл, содержаший io.h прототип
Описание tell получает текущую позицию указателя фай- ла, связанного с handle и выражает его ввиде чис- ла байт от начала файла.
Возвращаемое tell возвращает текущую позицию указателя значение файла. Возвращение -1(long) сообщает об ошибке и errno устанавливается в
EBADR - Ошибочный номер файла.
Переносимость Поддерживается на системах UNIX.
Смотрите также
Пример:
#include
#include
#include
#include
int main(void) { int handle; char msg[] = "Hello world"; if((handle = open("TEST.$$$",O_CREAT|O_TEXT|O_APPEND)) == -1) { perror("Ошибка:"); exit(1); } write(handle,msg,strlen(msg)); printf("Указатель файла находится на %ld байте\n",tell(handle)); close(handle); return 0; }

Textattr

textattr
Функция Устанавливает текстовые атрибуты.
Синтаксис #include
void textattr(int newattr);
Файл, содержаший conio.h прототип
Описание textattr позволяет устанавливать цвет фона и цвет символов одновременно за один вызов. (Обычно вы устанавливаете аттрибуты с помощью textcolor и textbackground).
Эта функция не относится к символам, находящимся в текущий момент на экране; она относится только к тому, что отображается функциями (такими как cprintf) выполняющими вывод в текстовом режиме, после того, как была вызвана функция textattr.
Информация цвета кодируется в параметре newattr следующим образом:
7 6 5 4 | 3 2 1 0 ----------------------------------------- | B | b | b | b | f | f | f | f | ----------------------------------------- |
В этом 8-битном параметре newaddr ffff - 4-битный цвет символов (1 - 15) bbb - 3-битный цвет фона (1 - 7) B - бит мигания
Если бит мигания включен, то символ будет мигать. Это можно осуществить путем добавления константы BLINK в аттрибут. Если вы используете символьные цветовые константы, определенные в conio.h для создания текстовых аттрибутов с помощью textattr, запомните следующие ограничения на цвет фона: 1) Вы можете выбрать только первые 8 цветов для фона;
2) Вы должны сдвинуть выбранный цвет фона вле- во на 4 бита для перемещения его в правильную битовую позицию.
Символьные константы в таблице: --------------------------------------------------- Константа Числ.знач. Для символов или фона? --------------------------------------------------- BLACK 0 оба BLUE 1 оба GREEN 2 оба CYAN 3 оба RED 4 оба MAGENTA 5 оба BROWN 6 оба LIGHTGRAY 7 оба DARKGRAY 8 для символов LIGHTBLUE 9 для символов LIGHTGREEN 10 для символов LIGHTCYAN 11 для символов LIGHTRED 12 для символов LIGHTMAGENTA 13 для символов YELLOW 14 для символов WHITE 15 для символов BLINK 128 для символов ---------------------------------------------------
Возвращаемое Нет. значение
Переносимость textattr работает только на IBM PC и совмес- тимых системах.
Смотрите также
Пример:
#include
int main(void) { int i; clrscr(); for(i=0;i

Textback

textbackground
Функция Выбирает новый цвет фона для текста.
Синтаксис #include
void textbackground(int newcolor);
Файл, содержаший conio.h прототип
Описание textbackground выбирает цвет фона в тексто- вом режиме. Эта функция работает только для функций, осуществляющим примой вывод на экран в текстовом режиме. newcolor определяет новый цвет фона. Вы можете определить его как целое (от 0 до 7) или как одну из символических констант, определенных в файле conio.h. При использовании символьных констант необходио включить файл conio.h.
Эта функция не относится к символам, находящимся в текущий момент на экране; она относится только к тому, что отображается функциями (такими как cprintf) выполняющими текстовый режим, осуществляя видео вывод после того, как функция вызвана.
Символьные константы в таблице: ---------------------------------- Константа Числ.знач. ---------------------------------- BLACK 0 BLUE 1 GREEN 2 CYAN 3 RED 4 MAGENTA 5 BROWN 6 LIGHTGRAY 7 -----------------------------------
Переносимость textbackground работает только с IBM PC и сов- местимыми. Соответствующая функция существует в Turbo Pascal.
Смотрите также
Пример:
#include
int main(void) { int i,j; clrscr(); for(i=0;i

Textcolo

textcolor
Функция Устанавливает цвет символов в текстовом режиме.
Синтаксис #include
void textcolor(int newcolor);
Файл, содержаший conio.h прототип
Описание textcolor выбирает цвет символа. Эта функция ока- зывает влияние на функции, производящие прямой вывод на экран в текстовом режиме. Вы можете выбрать цвет, используя символьную константу, определенную в conio.h. Если вы используете эту константу, вы должны включить файл conio.h.
Эта функция не относится к символам, находящимся в текущий момент на экране; она относится только к тому, что отображается функциями (такими как cprintf) выполняющими текстовый режим, осуществляя видео вывод после того, как textcolor вызвана.
Следующая таблица отображает возможные цвета (как символьные константы ) и их числовые значения. ---------------------------------- Константа Числ.знач. ---------------------------------- BLACK 0 BLUE 1 GREEN 2 CYAN 3 RED 4 MAGENTA 5 BROWN 6 LIGHTGRAY 7 DARKGRAY 8 LIGHTBLUE 9 LIGHTGREEN 10 LIGHTCYAN 11 LIGHTRED 12 LIGHTMAGENTA 13 YELLOW 14 WHITE 15 BLINK 128 -------------------------------------
Вы можете сделать символы мигающими, добавляя BLINK к цвету символов. Встроенная константа BLINK предназначена для этой цели. Например:
textcolor(CYAN+BLINK);
Замечание. Некоторые мониторы не узнают интенсивность сигнала, используемую для создания восьми "light"(светлый) цветов (8-15). В таких мониторах светлые цвета будут изображаться как их " темные" эквиваленты (0-7). Анологично, системы, которые не отображают цвет используют эти номера как оттенки одного цвета, особые образцы или особые атрибуты.(такие как подчеркивание, полужирный шрифт, курсив и т.п. ). То, что вы увидите при этом на экране, зависит от оборудования.
Возвращаемое Нет. значение
Переносимость textcolor работает только с IBM PC и сов- местимых. Соответствующая функция существует в Turbo Pascal.
Смотрите также
Пример:
#include
int main(void) { int i; for(i=0;i

Textheig

textheight
Функция Возвращает высоту строки в пикселах.
Синтаксис #include
int far textheight(char far *textstring);
Файл, содержащий graphics.h прототип
Описание Графическая функция textheight, берет теку- щий размер шрифта и фактор увеличения и определяет высоту textstring в пикселе. Эта функция используется для установления расстояний между строками, вычисления высоты окна, определения размера заголовка для того, чтобы он помещался в диаграмму или блок-схему, и т.д. Например, используя шрифт, матрица которого 8 х 8 бит, и фактор увеличения равный 1 ( установленные с помощью settextstyle), строка Turbo C++ будет высотой в 8 пикселов. Лучше использовать textheight для вычисления высоты строк, чем это делать вручную. При использовании этой функции нет необходимости выполнять модификацию кода источника при выборе различных шрифтов.
Возвращаемое textheight возврашает высоту текста в пик- значение селях.
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддерживающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int y=0,i; char msg[80];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } /* вывести тектс на экран */ for(i=0; i

Textmode

textmode
Функция Переводит экран в текстовый режим.
Синтаксис #include
void textmode(int newmode)
Файл, содержаший conio.h прототип
Описание textmode выбирает указанный текстовый режим. Вы можете задать текстовый режим (аргумент newmode), используя символьную константу перечисляемого типа text_modes (определенную в conio.h). Если вы используете эту константу, вы должны включить conio.h.
Константы типа text_modes, их числовые значения и режимы, корорые они определяют задаются в следующей таблице: __________________________________________________ Символьная Числовое Текстовый константа значение режим ___________________________________________________ LASTMODE -1 предыдущий текстовый режим BW40 0 черный и белый, 40 колонок C40 1 цветной, 40 колонок BW80 2 черный и белый, 80 колонок C80 3 цветной, 80 колонок MONO 7 монохромный, 80 ко- лонок C4350 64 EGA 43 строки и ___________________________________________________
Когда вызывается textmode, текущее окно переустанавливается в полный экран и текущие текстовые атрибуты переустанавливаются в нормальные, соответствующие вызову normvideo.
Определeние LASTMODE для textmode вызывает повторный выбор последнего текстового режима. textmode следует использовать только тогда, когда вы работаете в текстовом режиме (вероятно для перевода в другой текстовый режим). Только в этом контексте следует использовать textmode. Когда экран в графическом режиме, вам следует использовать restorecrtmode вместо временного выхода в текстовый режим.
Возвращаемое Нет. значение
Переносимость textcolor работает только с IBM PC и сов- местимых. Соответствующая функция существует в Turbo Pascal.
Смотрите также
Пример:
#include
int main(void) { textmode(BW40); cprintf("ABC"); getch(); textmode(C40); cprintf("ABC"); getch(); textmode(BW80); cprintf("ABC"); getch(); textmode(C40); cprintf("ABC"); getch(); textmode(MONO); cprintf("ABC"); getch(); return 0; }

Textwidt

textwidth
Функция Возращает ширину строки в пикселях.
Синтаксис #include
int far textwidth(char far *textstring);
Файл, содержащий graphics.h прототип
Описание Графическая функция textwidth берет длину строки, текущий размер шрифта и фактор увеличения и определяет ширину textstring в пикселях.
Эта функция используется для, вычисления ширины окна, определения размера заголовка для того, чтобы он помещался в диаграмму или блок-схему, и т.д.
Лучше использовать textwidht для вычисления ширины строк, чем это делать вручную. При использовании этой функции нет необходимости выполнять модификацию кода при выборе различных шрифтов.
Возвращаемое textwidth возвращает ширину строки текста значение в пикселях.
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддерживающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
#include
int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int x=0,y=0,i; char msg[80];
/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } y = getmaxy()/2; settextjustify(LEFT_TEXT,CENTER_TEXT); /* вывести текcт на экран */ for(i=0; i

Time

time
Функция Получает текущее время дня.
Синтаксис #include
time_t time (time_t *timer);
Файл, содержащий time.h прототип
Описание Функция time выдает текущее время в секундах, прошедшее с времени 00:00:00 GMT, 1 января, 1970, по Гринвичу и сохраняет это значение по адресу, на который указывает timer, при условии что timer есть ненулевой указатель.
Возвращаемое Функция time возвращает время в секундах, как опи- значение сано выше.
Переносимость Поддерживается на системах UNIX и совместима с ANSI.C.
Смотрите также
Пример:
#include
#include
#include
int main(void) { tome_t t; t = time(NULL); printf("С 1 января 1970 г. прошло %ld секунд\n",t); return 0; }

Timezone

timezone
Функция Содержит разницу в секундах между местным временем и GMT (среднее время по Гринвичу).
Синтаксис extern long timezone;
Объявлено в time.h
Описание timezone используется функциями времени и даты. Эта переменная вычисляется при помощи функции tzset; ей присваивается значение типа long, кото- рое является разницей (в секундах) между текущим местным временем и средним временем по Гринвичу.

Tmpfile

tmpfile
Функция Открывает временный файл в двоичном режиме.
Синтаксис #include
FILE *tmpfile(void);
Файл, содержаший stdio.h прототип
Описание tmpfile создает временный двоичный файл и откры- вает его для модификации (w+b). Файл автоматически уничтожается, при его закрытии или завершении программы.
Возвращаемое tmpfile возвращает указатель на поток временно со- значение зданного файла. Если файл не может быть создан, tempfile возвращает null.
Переносимость tmpfille поддерживается на системах UNIX и совме- стима с ANSI C.
Пример:
#include
#include
int main(void) { FILE *tempfp; tempfp = tmpfile(); if(tempfp) printf("Создан временный файл\n"); else { printf("Не могу создать временный файл\n"); exit(1); } return 0; }

Tmpnam

tmpnam
Функция Создает уникальное имя файла.
Синтаксис #include
char *tmpnam(char *s);
Файл, содержащий stdio.h прототип
Описание tmpnam создает уникальное имя файла, которое может быть успешно использовано как имя временного файла. tmpnam генерирует различные строки каждый раз, когда вы ее вызываете, до TMP_MAX раз. TMP_MAX определяется в stdio.h как 65535. Параметр s для tmpnam либо 0, либо указатель на массив, состоящий по крайней мере из L_tmpnam символов. L_tmpnam определено в stdio.h. Если s ноль, tmpnam оставляет имя сгенерированного временного файла во внутреннем статическом объекте и возвращает указатель на этот объект. Если s не ноль, tmpnam помещает свой результат в указанный массив, который должен быть длиной по крайней мере L_tmpnam символов, и возвращает s.
Замечание. Если вы создаете такой временный файл с помощью tmpnam, то вы сами отвечаете за уничтожение имени файла (например, с помощью вызова remove). Он не уничтожается автоматически.
Возвращаемое Если s ноль, то tmpnam возвращает указатель на значение внутренний статический объект. В противном слу- чае tmpnam возвращает s.
Переносимость tmpnam поддерживается на системах UNIX и совмес- тимых с ANSI.C.
Смотрите также
Пример:
#include
int main(void) { char name[13]; tmpnam(name); printf("Имя временного файла: %s\n",name); return 0; }

Toascii

toascii
Функция Переводит символы в формат ASCII.
Синтаксис #include
int toascii(int c);
Файл, содержащий ctype.h прототип
Описание toascii - это макрокоманда, которая конвертирует целое c в код ASCII, очищая все кроме младших семи битов; при этом получаемые значения находятся в пределах от 0 до 127.
Возвращаемое toascii возвращает конвертированное значение c. значение
Переносимость toascii поддерживается на системах UNIX;
Пример:
#include
#include
int main(void) { int number,result; number = 511; result = toascii(number); printf("%d %d\n",numder,result); return 0; }

Tolower

tolower
Функция Переводит символы в символы нижнего регистра.
Синтаксис #include
int tolower(int ch);
Файл, содержаший ctipe.h прототип
Описание tolower - это функция, которая переводит целое ch (в пределах EOF до 255) в его значение для нижне- го регистра (a-z) (если были символы верхнего ре- гистра (A-Z)); Все другие остаются без изменения.
Возвращаемое tolower возвращает преобразованное значение ch, значение если это символ верхнего регистра; Все другие возвращаются без изменений.
Переносимость tolower поддерживается на системах UNIX и совме- стимых с ANSI C. Определена Керниганом и Ритчи.
Пример:
#include
#include
#include
int main(void) { int length,i; char *string = "THIS IS A STRING."; length = strlen(string); for(i=0;i

Toupper

toupper
Функция Транслирует символы в верхний регистр.
Синтаксис #include
int toupper(int ch);
Файл, содержащий ctype.h прототип
Описание toupper - функция, преобразующая целое ch (в пределах от EOF до 255) в значение верхнего ре- гистра (A-Z) (если до этого был нижний ре- гистр(a-z)), остальные остаются без изменений.
Переносимость toupper поддерживается на системах UNIX и совме- стимых с ANSI C. Определена Керниганом и Ритчи.
Пример:
#include
#include
#include
int main(void) { int length,i; char *string = "this is a string."; length = strlen(string); for(i=0;i

Tzname

tzname
Функция Массив указателей на имена временных зон.
Синтаксис extern char * tzname[2];
Объявлено в time.h
Описание Глобальная переменная tzname является массивом указателей на строки, содержащие аббревиатуры для имен временных зон. tzname[0] указывает на строку из трех символов со значением имени временной зо- ны из строки окружения TZ. Глобальная переменная tzname[1] указывает на строку из трех символов со значением летнего времени для имени временной зо- ны из строки окружения TZ. Если это имя отсутст- вует, то tzname[1] указывает на нулевую строку.

Tzset

tzset
Функция Устанавливает значения глобальных переменных daylight, timezone, tzname.
Синтаксис #include
void tzset(void);
Файл, содержащий time.h прототип
Описание tzset устанавливает глобальные переменные daylight, timezone, tzname, основаваясь на пере- менной окружения TZ. Функции библтотеки ftime и localtime используют эти глобальные переменные для корректировки среднего времени по гринвичес- кому мередиану (GMT) с локальным временем зоны. Формат строки TZ следующий: TZ = zzz[+/-][d][lll] трехсимвольная строка представляющая имя текущей временной зоны. Все три символа необходимы. Нап- ример, строка "PST" может быть использована для обозначения тихоокеанского поясного времени. [+/-]d[d] - это поле содержащее число из одной или более цифр со знаком. Это число показывает разницу в часах между GMT и локальным временным поясом. Положительные числа соответствуют поясам к западу от GMT, отрицательные к востоку от GMT. Например, 5= EST, +8 = PST и -1 = континентальная Европа. Это число используется при вычислении глобальной переменной timezone. timezone - это разница в секундах между GMT и локальным време- нем.
lll - это необязательное трехсимвольное поле для обозначения временных зон, использующих летнее время. Например, PDT - представляет тихоакеанское поясное летнее время. Если это поле присутствует, то глобальная переменная daylight принимает нену- левое значение. Если же это поле отсутствует, daylight будет установлено в 0.
Если строка TZ не присутствует или не совпадает с выше описанной формой, то используется по умолча- нию TZ = "EST5EDT" для присвоения значений гло- бальным переменнным daylight, timezone, tzname.
Глобальная переменная tzname[0] указывает на трехсимвольную строку, содержащую значение имени временной зоны из строки TZ.
Глобальная переменная tzname[1] указывает на трехсимвольную строку, содержащую имя временной зоны летнего времени из строки TZ. Если имя лет- него времени нет tzname1 указывает на нулевую строку.
Возвращаемое Нет. значение
Переносимость tzset доступна в системах UNIX и XENIX.
Смотрите также
Пример:
#include
#include
#include
int main(void) { time_t td; putenv("TZ=PST8PDT") tzset(); time(&td); printf("Текущее время = %s\n",asctime(localtime(&td))); return 0; }

Описание функций Си

Ultoa

ultoa
Функция Преобразует длинное целое без знака в строку.
Синтаксис #include
char *ultoa(unsigned long value, char *string, int radix);
Файл, содержащий stdlib.h прототип
Описание utoa преобразует value в строку, заканчиваю- щуюсю нулевым символом и помещает результат в string. value имеет тип unsigned long.
radix определяет основание, которое будет исполь- зовано в конвертируемом значении; оно должно быть заключено между 2 и 36.ultoa не обеспечивает про- верку переполнения и если значение отрицательно и radix равно 10, это не устанавливает отрицатель- ный знак.
Замечание. Память, занимаемая строкой должна быть достаточно большой, чтобы вместить возвращаемую строку, включая символ терминального нуля(\0). utoa может возвращать до 33 байт.
Возвращаемое ultoa возвращает string. значение
Смотрите также
Пример:
#include
#include
int main(void) { unsigned long lnumber = 3123456789L; char string[25]; ultoa(lnumber,string,10); printf("строка = %s, unsigned long = %lu\n",string,lnumber); return 0; }

Ungetc

ungetc
Функция Помещает символы обратно во входной поток.
Синтаксис #include
int ungetc(char c, FILE *stream);
Файл, содержащий stdio.h прототип
Описание ungetc продвигает символ c обратно в указанный входной поток stream, который должен быть открыт для чтения. Этот символ может быть получен снова с помощью последующего вызова функций getc или fread для данного потока stream. Один символ мож- но поместить обратно в любой ситуации. Второй вы- зов функции ungetc без предварительного вызова функции getc приведет к тому, что предыдущий сим- вол будет потерян. Функции fflush,fseek, fsetpos и rewind очищает все помещенные обратно в поток символы.
Возвращаемое При успешном выполнении, ungetc возвращает символ значение помещенный обратно в поток. Иначе он возвращает EOF.
Переносимость ungetc поддерживается в системах UNIX и сов- местима с ANSI C.
Смотрите также
Пример:
#include
#include
int main(void) { int i; char ch; puts("введите целое, а затем символ\n"); /* считывать пока не встретится не цифра или EOF */ while((ch=getch())!=EOF && isdigit(ch)) i = 10 * i + ch - 48; /* преобразование в целое */ /* если был считан симол, не являющийся цифрой, поместить ее обратно */ if(ch != EOF) ungetc(ch,stdin); printf("i = %d, следующий символ в буфере: %c\n",getch()); return 0; }

Ungetch

ungetch
Функция Помещает символы назад в буфер клавиатуры.
Синтаксис #include
int ungetch(int ch);
Файл, содержащий conio.h прототип
Описание ungetch помещает символ ch назад на консоль, приводя к тому, что ch будет следующим вводимым символом. ungetch не работает, если она вызывает- ся больше одного раза перед следующим чтением.
Возвращаемое ungetch возвращает ch в случае успешного выпол- значение нения. Возвращаемое значение EOF указывает на ошибку.
Смотрите также
Пример:
#include
#include
int main(void) { int i=0; char ch; puts("введите целое, а затем символ\n"); /* считывать пока не встретится не цифра или EOF */ while((ch=getch())!=EOF && isdigit(ch)) i = 10 * i + ch - 48; /* преобразование в целое */ /* если был считан симол, не являющийся цифрой, поместить ее обратно */ if(ch != EOF) ungetch(ch); printf("i = %d, следующий символ в буфере: %c\n",getch()); return 0; }

Unixtodo

unixtodos
Функция Преобразует дату и время из формата UNIX в формат DOS.
Синтаксис #include
void unixtodos(long time, struct date *d, struct time *t);
Файл, содержащий dos.h прототип
Описание unixtodos преобразует время time из UNIX-формата в DOS-формат, и заполняет структуры date и time, на которые указывают d и t.
Возвращаемое Нет. значение
Переносимость unixtodos уникальна для DOS.
Смотрите также
Пример:
#include
#include
char *month[] = {"---","Jan","Feb","Mar","Apr","May","Jun", "Jul","Aug","Sep","Oct","Nov",Dec"};
#define SECONDS_PER_DAY 86400L /* секунд в сутках */
struct date d; struct time t;
int main(void) { unsigned long val; /* получить текущую дату и время */ getdate(&d); gettime(&t); printf("Сегодня %d %s %d\n",dt.da_day,month[dt.da_mon],dt.da_year); /* преобразовать дату и время в формат UNIX (число секунд с 1970 г. */ val = dostounix(&d,&t); /* вычесть 42 дня */ val -= (SECONDS_PER_DAY * 42); /* преобразовать обратнов формат DOS */ unixtodos(val,&d,&t); printf("42 дня назад было %d %s %d\n", dt.da_day,month[dt.da_mon],dt.da_year); return 0; }

Unlink

unlink
Функция Удаляет файл.
Синтаксис #include
int unlink(const char *filename);
Файл, содержащий dos.h, io.h, stdio.h прототип
Описание Функция unlink удаляет файл с именем filename. В имени filename могут присутствовать специфика- ция дисковода, маршрут, собственно имя файла. Знаки шаблона (*,?) не разрешены.
С помощью вызова данной функции не могут быть удалены файлы с режимом доступа только чтение. Чтобы удалить такие файлы сначала следует вызвать функцию chmod (или _chmod) для изменения атрибута доступа.
Примечание. Если файл был открыт, то перед удале- нием не забудьте его закрыть.
Возвращаемое При успешном завершении возвращается значение 0. значение В случае ошибки возвращается -1, и глобальная пе- ременная errno получает одно из следующих значе- ний:
ENOENT - Маршрут или имя файла не найдены; EACCES - Отказ доступа.
Переносимость Функция поддерживается в системах UNIX.
Смотрите также
Пример:
#include
#include
int main(void) { FILE *fp = fopen("Junk.jnk","w"); int status; fprintf(fp,"Junk"); status = access("junk.jnk",0); if(status == 0) printf("Файл существует.\n); else printf("Файл не существует.\n); fclose(fp); unlink("junk.jnk"); status = access("junk.jnk",0); if(status == 0) printf("Файл существует.\n); else printf("Файл не существует.\n); return 0; }

Unlock

unlock
Функция Разблокирует доступ к части файла.
Синтаксис #include
int unlock(int handle, long offset, long length);
Файл, содержащий dos.h прототип
Описание unlock обеспечивает интерфейс к механизму разде- ления файлов в DOS 3.x.
unlock уничтожает все блокировки ранее сделанные вызовом функции lock. Для того чтобы избежать ошибки, все блокировки должны быть сняты перед тем как файл закроется. Программа должна освобо- дить все блокировки до завершения.
Возвращаемое unlock возвращает 0 в случае успеха и -1 в случае значение ошибки.
Переносимость unlock уникальна для DOS 3.x. Более старые версии не поддерживают этот вызов.
Пример:
#include
#include
#include
#include
#include
#include
int main(void) { int handle,status; long length; handle = sopen("c:\\autoexec.bat", O_RDONLY, SH_DENYNO, S_IREAD); if(!handle) { printf("Ошибка при операции sopen"); exit(1); } length = filelength(handle); status = lock(handle,0L,length/2); if(status == 0) printf("Успешная операция блокировки"); else printf("Ошибка при операции блокировки"); status = unlock(handle,0L,length/2); if(status == 0) printf("Успешная операция разблокировки"); else printf("Ошибка при операции разблокировки"); close(handle); return 0; }

Описание функций Си

Va_arg

va_arg, va_end, va_start
Функция Создают список аргументов.
Синтаксис #include
void va_start(va_list param, lastfix); type va_arg(va_list param, type); void va_end(va_list param);
Файл, содержащий stdarg.h прототип
Описание Некоторые СИ-функции, такие как vfprintf и vprintf, принимают переменный список аргументов, в отличие от функций, имеющих фиксированное число аргументов. Макрокоманды семейства va_... обеспе- чивают простой путь доступа к данным спискам ар- гументов. Они используются для перебора аргумен- тов в том случае, когда вызываемая функция не со- общает номер и тип передаваемого аргумента. В за- головочном файле stdarg.h объявлен один тип пере- менного списка аргументов (va_list), и три макро- команды (va_start, va_arg, va_end).
Список va_list.
Данный массив содержит информацию, требуемую va_arg и va_end. При вызове функции с переменным списком аргументов, объявляется переменная param с типом va_list.
va_start Данная подпрограмма (применяемая как макрокоман- да) устанавливает аргумент param в качестве ука- зателя на первый аргумент, передаваемый функции. Заметим, что va_start должна вызываться перед va_arg или va_end. Функция va_start использует два аргумента: param и lastfix (смысл аргумента param объяснен выше в абзаце, посвященном va_list); lastfix - это имя последнего фиксиро- ванного параметра, передаваемого вызванной функ- ции.
va_arg Данная подпрограмма, также используемая, как мак- рокоманда, расширяется до выражения, имеющего тот же тип и значение, что и следующий передаваемый аргумент (один из переменных аргументов). Пара- метр param в подпрограмме va_arg должен быть тем же самым param, который инициализирует подпрог- рамма va_start.
По умолчанию вы можете использовать с va_arg char, unsigned char или float.
Когда va_arg используется первый раз, она возвра- щает первый в списке аргумент. При каждом после- дующем использовании va_arg возвращает следующий по порядку аргумент в списке. Это выполняется посредством обращения к param, и затем присвоения param адреса следующего аргумента. Для этого ис- пользуется параметр type. Каждый успешный вызов подпрограммы va_arg переадресовывает param на следующий аргумент в списке.

va_end Данная макрокоманда способствует нормальному воз- врату вызываемой функции. Макрокоманда va_end мо- жет модифицировать param таким образом, что он не сможет быть использован до вызова va_start. va_end должна быть вызвана после того, как функ- ция va_arg прочтет все аргументы; попытка сделать иначе вызовет непредсказуемое поведение вашей программы.

Возвращаемое Функции va_start и va_end не имеют возвращаемых значение значений; va_arg возвращает текущий аргумент в списке (тот, который адресуется с помощью param).

Переносимость va_arg, va_start, va_end поддерживается на сис- темах UNIX.

Смотрите также Функции .. ..

Пример:

#include

#include

/* вычисляет сумму, завершаемого 0 списка */ void sum(char *msg, ...) { int total = 0; va_list ap; int arg; va_start(ap, msg); while ((arg = va_arg(ap,int)) != 0) { total += arg; } printf(msg, total); }

int main(void) { sum("Сумма 1+2+3+4 = %d\n", 1,2,3,4,0); }

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

Сумма 1+2+3+4 = 10

Пример 2:

#include

#include

void error(char *format,...) { va_list argptr; print("error: "); va_start(argptr, format); vprintf(format, argptr); va_end(argptr); }

int main(void) { int value = -1; error("this is just an error message\n"); error("invalid value %d encountered\n", value); }

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

error: this is just an error message error: invalid value -1 encountered

Vfprintf

vfprintf
Функция Направляет в поток отформатированный вывод.
Синтаксис #include
int vfprintf(FILE *stream, char *format, va_list arglist);
Файл, содержащий stdio.h прототип
Описание Функция v...printf известна как дополнительная точка входа для функций ...printf. Они ведут себя точно также, как и их ...printf-двойники, но они имеют доступ к указателю на список аргументов, а не к самому аргументному списку.
vfprintf осуществляет доступ к указателю на серии аргументов, применяет к каждому аргументу формат- ную спецификацию, содержащуюся в строке формата, на которую указывает format, и осуществляет вывод отформатированных данных в поток. Число специфи- каций формата должно быть равно числу аргументов. Смотри в printf описание информации, включаемой в спецификацию формата.
Возвращаемое vfprintf возвращает число выведенных байтов. В значение случае ошибки vprintf возвращает EOF.
Переносимость vfprintf поддерживается на UNIX System V, и сов- местима с ANSI C.
Смотрите также
Пример:
#include
#include
FILE *fp;
int vfpf(char *fmt, ...); { va_list argptr; int cnt; va_start(argptr,format); cnt = vfprintf(fp,fmt,argptr); va_end(argptr); return cnt; }
int main(void) { int inumber = 30; float fnumber = 90; char string[4] = "abc"; fp = tmpfile(); if(fp == NULL) { perror("Вызов tmpfile"); exit(1); } vfpf("%d %f %s",inumber,fnumber,string); rewind(fp); fscanf("%d %f %s\n",&inumber,&fnumber,string); printf("%d %f %s",inumber,fnumber,string); fclose(fp); return 0; }

Vfscanf

vfscanf
Функция Выполняет форматный ввод из потока.
Синтаксис #include
int vfscanf(FILE *stream, const char *format, va_list arglist);
Файл, содержащий stdio.h прототип
Описание Функции v...scanf известны как дополнительные точки входа для функций ...scanf. Они ведут себя точно также, как и их ...scanf-двойники, но они имеют доступ к указателю на список аргументов, а не к самому аргументному списку.
vfscanf сканирует несколько полей ввода и читает из потока по одному символу в каждый момент вре- мени. Затем каждое поле форматируется в соответс- твии с форматной спецификацией, передавемой в vfscanf в форматной строке, на которую указывает format. И наконец, vfscanf запоминает отформати- рованный ввод по адресу, передаваемому ему в ка- честве аргумента, следующего за format. Число спецификаций формата и адресов должно быть равно числу полей ввода.
Смотри в scanf описание информации, включенной в спецификацию формата.
vfscanf может закончить сканирование конкретного поля, не достигнув нормального символа конца_поля (пробел), или полностью прервать его по ряду при- чин. Смотри в scanf описание различных случаев.
Возвращаемое vfscanf возвращает число входных полей, которые значение были сосканированы, преобразованы и запомнены. Возвращаемое значение не вкдлючает сканированные поля, которые не были запомнены. Если не было сохранено ни одно поле, то возвращаемое значение - 0.
Если vfscanf пытается читать в конце_файла, то возвращаемое значение EOF.
Переносимость vfscanf поддерживается на UNIX System V.
Смотрите также
Пример:
#include
#include
FILE *fp;
int vfsf(char *fmt, ...); { va_list argptr; int cnt; va_start(argptr,format); cnt = vfscanf(fp,fmt,argptr); va_end(argptr); return (cnt); }
int main(void) { int inumber = 30; float fnumber = 90; char string[4] = "abc"; fp = tmpfile(); if(fp == NULL) { perror("Вызов tmpfile"); exit(1); } fprintf(fp,"%d %f %s",inumber,fnumber,string); rewind(fp); vfsf("%d %f %s",&inumber,&fnumber,string); printf("%d %f %s",inumber,fnumber,string); fclose(fp); return 0; }

Vprintf

vprintf
Функция Посылает отформатированный вывод в стандартный по- ток stdout.
Синтаксис #include
int vprintf(const char *format, va_list arglist);
Файл, содержащий stdio.h прототип
Описание Функции v...printf известны как дополнительные точки входа для функций ...printf. Они ведут себя точно также, как и их ...printf-двойники, но они имеют доступ к указателю на список аргументов, а не к самому списку.
vprintf осуществляет доступ к указателю на серии аргументов, применяет к каждому аргументу формат- ную спецификацию, содержащуюся в строке формата, на которую указывает format, и осуществляет вывод отформатированных данных в stdout. Число специфи- каций формата должно быть равно числу аргументов.
Смотри в printf описание информации, включаемой в спецификацию формата.
Возвращаемое vprintf возвращает число выведенных байтов. В значение случае ошибки vprintf возвращает EOF.
Переносимость vprintf поддерживается на UNIX System V, и сов- местима с ANSI C.
Смотрите также
Пример:
#include
int vpf(char *fmt, ...); { va_list argptr; int cnt; va_start(argptr,format); cnt = vprintf(fmt,argptr); va_end(argptr); return(cnt); }
int main(void) { int inumber = 30; float fnumber = 90; char *string = "abc"; vpf("%d %f %s",inumber,fnumber,string); return 0; }

Vscanf

vscanf
Функция Выполняет форматный ввод из стандартного потока stdin.
Синтаксис #include
int vscanf(const char *format, va_list arglist);
Файл, содержащий stdio.h прототип
Описание Функции v...scanf известны как дополнительные точки входа для функций ...scanf. Они ведут себя точно также, как и их ...scanf-двойники, но они имеют доступ к указателю на список аргументов, а не к самому списку.
vscanf сканирует несколько полей ввода и читает из stdin по одному символу в каждый момент време- ни. Затем каждое поле форматируется в соответст- вии с форматной спецификацией, передавемой в vscanf в форматной строке, на которую указывает format. И наконец, vscanf запоминает отформатиро- ванный ввод по адресу, передаваемому ему в качес- тве аргумента, следующего за format. Число специ- фикаций формата и адресов должно быть равно числу полей ввода.
Смотри в scanf описание информации, включенной в спецификацию формата.
vscanf может закончить сканирование конкретного поля, не достигнув нормального символа конца_поля (пробел), или полностью прервать его по ряду при- чин. Смотри в scanf описание различных случаев.
Возвращаемое vscanf возвращает число входных полей, которые значение были сосканированы, преобразованы и запомнены. Возвращаемое значение не включает сканированные поля, которые не были запомнены. Если не было сохранено ни одно поле, то возвращаемое значение - 0.
Если vscanf пытается читать в конце_файла, то возвращаемое значение EOF.
Переносимость vscanf поддерживается на UNIX System V.
Смотрите также
Пример:
#include
#include
int vscnf(char *fmt, ...); { va_list argptr; int cnt; printf("Введите целое, число с плавающей точкой, и строку: \n"); va_start(argptr,format); cnt = vscanf(fmt,argptr); va_end(argptr); return(cnt); }
int main(void) { int inumber = 30; float fnumber = 90; char *string = "abc"; vscnf("%d %f %s",&inumber,&fnumber,string); printf("%d %f %s",inumber,fnumber,string); return 0; }

Vsprintf

vsprintf
Функция Посылает отформатированный вывод в строку.
Синтаксис #include
int vsprintf(char *string, const char *format, va_list arglist);
ФАйл, содержащий stdio.h прототип
Описание Функции v...printf известны как дополнительные точки входа для функций ...printf. Они ведут себя точно также, как и их ...printf-двойники, но они имеют доступ к указателю на список аргументов, а не к самому списку.
vsprintf осуществляет доступ к указателю на серии аргументов, применяет к каждому аргументу формат- ную спецификацию, содержащуюся в строке формата, на которую указывает format, и осуществляет вывод отформатированных данных в строку. Число специфи- каций формата должно быть равно числу аргументов.
Смотри в printf описание информации, включаемой в спецификацию формата.
Возвращаемое vsprintf возвращает число выведенных байтов. В значение случае ошибки vsprintf возвращает EOF.
Переносимость vsprintf поддерживается на UNIX System V, и сов- местима с ANSI C.
Смотрите также
Пример:
#include
#include
char buffer[80];
int vspf(char *fmt, ...); { va_list argptr; int cnt; va_start(argptr,format); cnt = vsprintf(buffer,fmt,argptr); va_end(argptr); return cnt; }
int main(void) { int inumber = 30; float fnumber = 90; char string[4] = "abc"; vspf("%d %f %s",inumber,fnumber,string); printf("%s",buffer); return 0; }

Vsscanf

vsscanf
Функция Выполняет форматный ввод из потока.
Синтаксис #include
int vsscanf(const char *buffer, const char *format, va_list arglist);
Файл, содержащий stdio.h прототип
Описание Функции v...scanf известны как дополнительные точки входа для функций ...scanf. Они ведут себя точно также, как и их ...scanf-двойники, но они имеют доступ к указателю на список аргументов, а не к самому списку.
vsscanf сканирует несколько полей ввода и читает из потока по одному символу в каждый момент вре- мени. Затем каждое поле форматируется в соответс- твии с форматной спецификацией, передавемой в vsscanf в форматной строке, на которую указывает format. И наконец, vsscanf запоминает отформати- рованный ввод по адресу, передаваемому ему в ка- честве аргумента, следующего за format. Число спецификаций формата и адресов должно быть равно числу полей ввода.
Смотри в scanf описание информации, включенной в спецификацию формата.
vsscanf может закончить сканирование конкретного поля, не достигнув нормального символа конца_поля (пробел), или полностью прервать его по ряду при- чин. Смотри в scanf описание различных случаев.
Возвращаемое vsscanf возвращает число входных полей, которые значение были сосканированы, преобразованы и запомнены. Возвращаемое значение не включает сканированные поля, которые не были запомнены. Если не было сохранено ни одно поле, то возвращаемое значение - 0.
Если vsscanf пытается читать в конце_файла, то возвращаемое значение EOF.
Переносимость vsscanf поддерживается на UNIX System V.
Смотрите также
Пример:
#include
#include
char buffer[80] = "30 90.0 abc";
int vssf(char *fmt, ...); { va_list argptr; int cnt; fflash(stdin); va_start(argptr,format); cnt = vsscanf(buffer,fmt,argptr); va_end(argptr); return cnt; }
int main(void) { int inumber; float fnumber; char string[80]; vssf("%d %f %s",&inumber,&fnumber,string); printf("%d %f %s",inumber,fnumber,string); return 0; }

Описание функций Си

Wherex

wherex
Функция Возвращает горизантальную позицию курсора в окне.
Синтаксис #include
int wherex(void);
Файл, содержащий conio.h прототип
Описание wherex возвращает координату X текущей позиции курсора (внутри текущего текстового окна).
Возвращаемое wherex возвращает целое число от 1 до 80. значение
Переносимость wherex действительна только для IBM PC и совмес- тимых с ней. Аналогичная функция существует в Turbo Pascal.
Смотрите также
Пример:
#include
int main(void) { clrscr(); gotoxy(10,10); cprintf("Текущая позиция курсора X:%d Y: %d",wherex(),wherey()); getch(); return 0; }

Wherey

wherey
Функция Возвращает вертикальную позицию курсора в окне.
Синтаксис #include
int wherey(void);
Файл, содержащий conio.h прототип
Описание wherey возвращает координату Y текущей позиции курсора ( внутри текущего текстового окна).
Возвращаемое wherey возвращает целое число от 1 до 25, до 43 значение или 50.
Переносимость wherey действительна только для IBM PC и совмес- тимых с ней. Аналогичная функция существует в Turbo Pascal.
Смотрите также
Пример:
#include
int main(void) { clrscr(); gotoxy(10,10); cprintf("Текущая позиция курсора X:%d Y: %d",wherex(),wherey()); getch(); return 0; }

Window

window
Функция Определяет в текстовом режиме активное окно.
Синтаксис #include
void window(int left,int top,int right,int bottom);
Файл, содержащие conio.h прототип
Описание window определяет текстовое окно на экране. Если координаты заданы неверно, то вызов window игно- рируется.
left и top - экранные координаты левого верхнего угла окна.
right и bottom - экранные координаты правого ниж- него угла.
Минимальный размер текстового окна это: 1 колонка на одной строчке. Окно по умолчанию - это весь экран с координатами:
80-колоночный режим: 1, 1, 80, 25 40-колоночный режим: 1, 1, 40, 25
Возвращаемое Нет. значение
Переносимость window действительна только для IBM PC и совмес- тимых с ней. Аналогичная функция существует в Turbo Pascal.
Смотрите также
Пример:
#include
int main(void) { window(10,10,40,11); textcolor(BLACK); textbackground(WHITE); cprintf("Это тест\r\n"); return 0; }

Write

write
Функция Записывает данные в файл.
Синтаксис #include
int write(int handle, void *buf, unsigned len);
Файл, содержащий io.h прототип
Описание write записывает буфер, содержащий данные, в файл или на устройство, соответствующее номеру handle. handle - это логический номер, полученный в опе- рациях creat, open, dup, dup2.
Данная функция делает попытку записи len байтов из буфера, адресуемого параметром buf, в файл, соответствующий номеру handle. За исключением си- туации, при которой функция write записывает дан- ные в текстовый файл, количество байтов, записан- ное в файл, будет не больше, чем требуемое коли- чество.
Максисмальное число байтов, которое write может записать 65534, т.к. 65535(0xFFFF) тоже самое, что и -1, которая является возвращаемым кодом ошибки для write.
В текстовых файлах если write встречает символ перевода строки(LF), она выводит пару CR/LF.
Если число действительно записанных байт меньше, чем задано, то должна быть выдана ошибка и воз- можно это говорит о том, что на диске нет места.
Для дисков и дисковых файлов, запись всегда осу- ществляется с текущего файлового указателя. Для устройств, байты посылаются непосредственно на устройства.
Для файлов, открытых с ключем O_APPEND, файловый указатель устанавливается на EOF, прежде чем бу- дет осуществлена запись данных.
Возвращаемое write возвращает число записанных байтов. При значение записи в текстовый файл генерируемые символы возврата каретки CR не считаются. В случае ошибки write возвращает -1, и устанавливает глобальную переменную errno в:
EACCED - Permission denied; EBADR - Bad file number.
Переносимость write поддерживается на UNIX-системах.
Смотрите также



    Биржевая торговля: Механические торговые системы - Создание - Программирование