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

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

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