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

         

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, &regs, &regs); }

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(&regs, &regs); /* 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(&regs, &regs); /* 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; }