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

         

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; }