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

         

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