Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочник по функциям С++.doc
Скачиваний:
131
Добавлен:
02.05.2014
Размер:
3.57 Mб
Скачать

Bsearch

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

НазначениеБинарный поиск.

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

void *bsearch(const void *key, const void

*base, size_t nelem, size_t width,

int (*femp)(const void *, const void *));

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

ЗамечанияФункция предназначена для поиска массива из

nelem элементов в памяти и возвращает адрес

первого появления в памяти такого массива дан-

ных. В случае, если массив не найден, функция

возвращает 0.

Тип size_t, описанный с помощью typedef, ин-

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

- nelem задает число элементов таблицы

- width определяет число байтов в каждом

элементе таблицы.

Функция сравнения *femp вызывается с двумя ар-

гументами - elem1 и elem2. Каждый из этих аргу-

ментов указывает на элемент сравнения.

Функция сравнения сравнивает эти элементы и

возвращает целое число, базирующееся на резуль-

тате сравнения.

В bsearch

---------

Если ключ поиска fcmp возвращает

больше чем *elem целое <0

равен *elem 0

меньше чем *elem целое >0

Обычно elem1 соответствует аргументу key, а

elem2 является указателем на элемент просматри-

ваемой таблицы.

ВозвращаемоеЭта функция возвращает адрес первого элемента

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

такой элемент не найден, то bsearch возвращает

0.

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

Си.

Смотри такжеlfind, lsearch, qsort

Пример

#include<stdio.h>

#include<stdlib.h>

#define NELEMS (arr) (sizeof(arr)/sizeof

(arr[0]))

int numarray[]={123,145,512,627,800,993};

int numeric(int *p1,int *p2)

{

return(*p1 = *p2)

}

/* Возврат 1, если ключ в таблице, 0 - в

противном случае */

int lookup(int key)

{

int *itemptr;

/* bsearch() возвращает указатель на

найденный элемент */

itemptr=(int*) bsearch (&key,numarray,

NELEMS(numarray), sizeof(int),numeric);

return(itemptr != NULL);

}

main()

{

printf("Есть 512 в таблице ? ");

printf("%s\n",lookup(512) ? "ДА":"НЕТ");

}

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

Есть 512 в таблице? ДА

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

cabs

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

НазначениеВычисление абсолютного значения комплексного

аргумента.

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

double cabs(struct complex znum);

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

Замечанияcabs - макрос, вычисляющий абсолютное значение

znum - комплексного числа. znum является струк-

турой типа complex, которая определена в math.h

как:

struct complex {

double x, y;

};

где x - реальная часть числа, а y - мнимая.

Вызов cabs эквивалентен

sqrt ( znum.x*znum.x + znum.y*znum.y )

Если вы не включите math.h (или если вы включи-

те его, но опишите #undef cabs), то получите

функцию cabs, а не макрос.

Возвращаемоеcabs возвращает абсолютное значение znum, типа

значениеdouble. При переполнении cabs возвращает

HUGE_VAL и устанавливает errno в

ERANGE Результат вне диапазона

Обработка ошибок для cabs может быть модифици-

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

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

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

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

calloc

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

НазначениеВыделение основной памяти.

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

void *calloc(size_t nelem, size_t size);

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

ЗамечанияЭта функция обеспечивает распределение памяти

типа "куча". Память доступна для динамического

размещения путем создания блоков памяти различ-

ного размера. Многие структуры данных, такие,

как деревья и списки, естественно, используют

размещение памяти в виде "кучи".

Все пространство между концом сегмента данных и

вершиной программного стека в малых моделях па-

мяти доступно для использования, кроме 256 байт

непосредственно перед вершиной стека. Эта па-

мять используется для возможности увеличения

стека и, кроме того, небольшое количество памя-

ти используется для нужд MS-DOS.

В больших моделях памяти все пространство от

программного стека до конца физической памяти

является "кучей".

calloc размещает блок размером nelem*size. Блок

заполняется нулями.

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

значениеразмещенный блок. Если для размещаемого блока

недостаточно памяти и size или nelem равны 0,

функция возвращает NULL.

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

местима с ANSI Си и определена Керниганом и

Ритчи.

Сммотри также farcalloc, free, malloc, realloc

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

ceil

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

НазначениеОкругление значения аргумента сверху.

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

double ceil (double x)

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

Замечанияceil находит наименьшее целое, не меньшее, чем

х.

ВозвращаемоеФункция ceil возвращает найденные целые (типа

значениеdouble)

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

Си.

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

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

сgets

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

НазначениеЧтение строки с консоли.

Синтаксис char *cgets(char *string)

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

Замечанияcgets читает строку символов с консоли и запо-

минает строку и ее длину в области, на которую

указывает string.

cgets читает символы, пока не обнаружит комби-

нации CR/LF или пока не будет прочитано макси-

мальное количество символов. Комбинацию CR/LF

cgets заменяет на \0.

Перед вызовом cgets в string[0] необходимо ус-

тановить максимальную длину строки. После вы-

полнения cgets в string[1] содержится число

действительно прочитанных символов. Прочитанные

символы начинаются со string[2] и заканчиваются

нулем. Таким образом, строка должна иметь длину

не меньше чем string[0]+2 байт.

Возвращаемоеcgets возвращает &string[2] - указатель на

значениестроку символов, которая была прочитана. Ошибки

не выдает.

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

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

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

Смотри также fgets, gettch, getche, gets

Пример

#include<stdio.h>

#include<conio.h>

main()

{

char buffer[82];

char *p;

buffer[0] = 80;

p = cgets(buffer);

printf("\nсgets получила %d символов"

" : %s\n",buffer[1],p);

printf("возвращен указатель - %p,\n адрес"

"buffer[2] - %p\n", p, &buffer[2]);

buffer[0] = 5;

p = cgets(buffer);

printf("сgets получила %d символов :"

"%s\n",buffer[1],p);

printf("возвращен указатель - %p, адрес"

" buffer[2] - %p\n", p, &buffer[2]);

}

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

abcdfghijklm

cgets получила 12 символов :"abcdfghijklm"

возвращен указатель - FEF6,

адрес buffer[2] - FEF6

abcd

cgets получила 4 символов :"abcd"

возвращен указатель - FEF6,

адрес buffer[2] - FEF6

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

chdir

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

НазначениеИзменяет рабочий каталог.

Синтаксис int chdir (const char *path)

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

Замечанияchdir - меняет текущий рабочий каталог на

каталог, заданный в path. path дол-

жен задавать существующий каталог.

Дисковод также можно задавать в аргументе path,

например:

chdir("a:\\turboc") или chdir("a:/turboc")

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

значениезначение 0. В противном случае возвращается

значение -1 и errno устанавливается на

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

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

Смотри такжеgetcurdir, getcwd, mkdir, rmdir, system

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

_chmod

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

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

Синтаксис int _chmod(const char *path,int func[, int

attrib]);

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

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

атрибуты файла в MS_DOS. Если func равно 0, то

функция возвращает текущие MS_DOS атрибуты фай-

ла. Если func равно 1, то атрибуты устанавлива-

ются в соответствии с attrib. attrib может быть

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

ленных в dos.h):

FA_RDONLY только чтение

FA_HIDDEN скрытый файл

FA_SYSTEM системный файл

ВозвращаемоеПри успешном завершении _chmod возвращает сло-

значениево, соответствующее атрибуту файла; в противном

случае возвращается -1. В случае ошибки errno

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

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

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

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

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

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

chmod

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

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

Синтаксис #include<sys\stat.h>

int chmod (const char *filename, int permis);

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

Замечанияchmod устанавливает режим доступа к файлу в со-

ответствии с маской, задаваемой в permiss.

filename указывает на строку, именующую файл.

permiss может содержать одну или две символьные

константы S_IWRITE и S_IREAD (определенные в

sys\stat.h)

__________________________________________________

Значение permiss Доступ

__________________________________________________

S_IWRITE Разрешение на запись

S_IREAD Разрешение на чтение

S_IREAD|S_IWRITE Разрешение на чтение и

запись

___________________________________________________

ВозвращаемоеПри успешном изменении режима доступа к файлу

значениеchmod возвращает 0. В противном случае

возвращается -1.

В случае ошибки переменная errno устанавливает-

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

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

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

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

Смотри также access, _chmod, fstat,open, sopen, stat

Пример

#include<stdio.h>

#include<sys\stat.h>

#include<io.h>

void make_read_only(char *filename)

{

int stat;

stat = chmod(filename, S_IREAD);

if(stat)

printf ("Не могу установить %s в 'только"

" чтение'\n", filename);

else

printf ("установлен режим в %s"

" 'только чтение'\n", filename);

}

main ()

{

make_read_only("NOTEXIST.FIL");

make_read_only("MYFILE.FIL");

}

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

Не могу установить NOTEXIST.FIL в 'только чтение'

Установлен режим в MYFILE.FIL 'только чтение'

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

chsize

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

НазначениеИзменяет размер файла.

Синтаксис int chsize(int handle, long size);

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

Замечанияchsize изменяет размер файла, ассоциированного

с handle, в зависимости от аргумента size, по

сравнению с действительным размером файла. Файл

может быть укорочен или удлинен.

Режим, в котором вы открыли файл, должен допус-

кать запись.

При расширении файла chsize добавляет нулевые

символы (\0). При укорачивании файла все данные

вне маркера конца файла теряются.

ВозвращаемоеПри успешном завершении chsize возвращает 0.

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

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

EACCESS ошибка доступа

EBADF некорректный номер файла

ENOSPC UNIX - не DOS

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

Смотри также close, _creat, creat, open

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

circle

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

НазначениеВычерчивает круг.

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

void far circle(int x, int y, int radius);

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

Замечанияcircle чертит круг с центром в (x,y) и радиу-

сом, заданным в radius.

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

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

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

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

значение

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

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

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

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

sector

Пример Смотри arc

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