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

         

Raise



     raise

Функция Посылает программный сигнал выполняемой программе.

Синтаксис #include

int raise(int sig);

Файл, содержащий signal.h прототип

Описание raise посылает сигнал sig программе. Если програм- ма загрузила процедуру обработки сигнала, для сигнала sig, то запускается данная процедура. Ес- ли процедуры обработки для данного сигнала нет, то производятся действия, определенные для данно- го сигнала по умолчанию.

Имеются следующие типы сигналов, определенные в файле signal.h:

-------------------------------------------------- Сигнал Значение -------------------------------------------------- SIGABRT Ненормальное завершение (*) SIGFPE Неверная операция над числами с плавающей точкой SIGILL Неверная инструкция (#) SIGINT Прерывание по Ctrl_Break. SIGSEGV Неверный доступ к памяти (#) SIGTERM Запрос на завершение программы (*) --------------------------------------------------

Сигналы помеченные (*) не генерируются DOS или Turbo C++, во время нормальной работы. Однако они могут генерироваться с помощью функции raise. Сигналя помеченные (#) не могут генерироваться асинхронно процессорами 8088 или 8086, однако мо- гут генерироваться некоторыми другими процессора- ми (смотри signal).

Возвращаемое При успешном завершении raise возвращает 0, в про- значение тивном случае ненулевое значение.

Переносимость raise поддерживается системами UNIX и стандартом ANSI C.

Смотрите также

Пример:

#include

int main() { int a,b;

a = 10; b = 0; if(b==0)

/* предварить ошибку при делении на 0 */ raise(SIGFPE); a = a / b; return 0; }



Rand





     rand

Функция Генератор случайных чисел.

Синтаксис #include

int rand(void);

Файл, содержащий stdlib.h прототип

Описание Функция rand использует мультипликативный конгру- энтный генератор случайных чисел с периодом 2^32, чтобы получать псевдослучайные числа в диапазоне от 0 до RAND_MAX. Символическая константа RAND_MAX определена в stdlib.h; ее значение 2^15ё1.

Переносимость Функция поддерживаются на системах UNIX и стандар- том ANSI C.

Смотрите также

Пример:

#include

#include

int main(void) { int i; printf("10 случайных чисел от 0 до 99 \n\n"); for (i=0; i



Randbrd



     randbrd

Функция Чтение с диска.

Синтаксис #include

int randbrd(struct fcb *fcbptr, int recent);

Файл, содержащий dos.h прототип

Описание Функция randbrd считывает количество записей recent, используя блок FCB, адресуемый указателем fcbptr. Записи считываются в память по текущему адресу DTA. Записи считываются с диска, причем информация берется из поля random record блока FCB. Эта операция выполняется с помощью системно- го вызова DOS 0x27.

Действительное число считанных записей можно оп- ределить проанализировав поля random record блока FCB. Данное поле после операции будет заполнено информацией о числе действительно считанных запи- сей.

Возвращаемое В зависимости от результата работы функций randbrd значение возвращает следующие значения:

0- все записи прочитаны;

1- достигнут конец файла (EOF) и последняя запись прочитана полностью;

2- считанные записи будут располагаться рядом с адресом 0xFFFF (прочитано записей столько, сколько возможно).

3- достигунт конец файла и последняя запись обра- ботана не полностью.

Переносимость Функция уникальна для DOS.

Смотрите также

Пример:

#include

#include

#include

#include

int main(void) { char far *save_dta; char line[80],buffer[256]; struct fcb blk; int i,result; /* ввести имя файла */ printf("Введите устройство и имя файла (без маршрута, например\ a:file.dat)\n"); gets(line); /* записать имя файла в FCB */ if(!parsfnm(line,&blk,1)) { printf("Ошибка при вызове parsfnm\n"); exit(1); } printf("Устройство #%d файл: %s\n\n",blk.fcb_drive, blk.fcb_name); /* открыть файл, с использованием функций DOS, работающих с FCB */ bdosptr(0x0f,&blk,0); /* сохранить старый DTA, создать новый */ save_dta = getdta(); setdta(buffer); /* передать в FCB информацию об DTA */ blk.fcb_recsize = 128; blk.fcb_random = 0L; result = randbrd(&blk,1); /* проверить результат операции */ if(!result) printf("Чтение закончено успешно\n"); else { perror("Ошибка, во время чтения \n"); exit(1); } /* считать данные из новой DTA */ printf("Первые 128 символов:\n); for(i=0; i



Randbwr



     randbwr

Функция Запись на диск.

Синтаксис #include

int randbwr(struct fcb *fcbptr, int reccnt);

Файл, содержащий dos.h прототип

Описание Функция randbwd записывает recent записей, исполь- зуя блок FCB, адресуемый указателем fcbptr. Эта операция выполняется с помощью системного вызова DOS 0x28.

Действительное число записанных записей можно оп- ределить проанализировав поля random record блока FCB. Данное поле после операции будет заполнено информацией о числе действительно записанных за- писей.

Возвращаемое В зависимости от результата работы функций randbwd значение возвращает следующие значения:

0- все записи записаны; 1- На диске нет места для записи данных. (Не за- писано ни одной записи.) 2- выводимые записи располагаются рядом с адресом 0xFFFF (выведено записей столько, сколько воз- можно).

Переносимость Функция уникальна для DOS.

Смотрите также

Пример:

#include

#include

#include

#include

int main(void) { char far *save_dta; char line[80]; char buffer[256] = "RANDBWR test!"; struct fcb blk; int result; /* ввести имя файла */ printf("Введите имя нового файла (без маршрута, например\ a:file.dat)\n"); gets(line); /* записать имя файла в FCB */ if(!parsfnm(line,&blk,1)) printf("Устройство #%d файл: %s\n\n",blk.fcb_drive, blk.fcb_name); /* создать файл, с использованием функций DOS, работающих с FCB */ if(bdosptr(0x16,&blk,0)==-1) { printf("Ошибка при создании файла\n"); exit(1); } /* сохранить старый DTA, создать новый */ save_dta = getdta(); setdta(buffer); /* вывод в файл */ blk.fcb_recsize = 256; blk.fcb_random = 0L; result = randbwd(&blk,1); /* проверить результат операции */ if(!result) printf("Запись закончена успешно\n"); else { perror("Ошибка диска\n"); exit(1); } /* закрыть файл */ if(bdosptr(0x10,&blk,0)==-1) { printf("Ошибка при закрытии файла\n"); exit(1); } /* восстановить DTA */ setdta(save_dta); return 0; }



Random



     random

Функция Генератор случайных чисел.

Синтаксис #include

int random(int num);

Файл, содержащий stdlib.h прототип

Описание Функция random возвращает случайное число в диапазоне от 0 до num-1. random(num) это макро, определенное в виде (rand()%num). И num и возвра- щаемое значение целые.

Возвращаемое random возвращает случайное число в диапазоне от значение 0 до num-1.

Переносимость Соответствующая функция существует в Turbo Pascal.

Смотрите также

Пример:

#include

#include

#include

int main(void) { randomize(); printf("Случайное число в диапазоне от 0 до 99:", random(100)); return 0; }



Randomiz



     randomize

Функция Инициализация генератора случайных чисел.

Синтаксис #include

#include

void randomize(void);

Файл, содержащий stdlib.h прототип

Описание Функция randomize инициализирует генератор случай- ных чисел некоторым случайным числом. Т.к. randomize это макро, которое использует вызов функции time, то мы рекомендуем включить также файл time.h при использовании этой функции.

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

Переносимость Соответствующая функция существует в Turbo Pascal.

Смотрите также

Пример:

#include

#include

int main(void) { int i; randomize(); printf("10 случайных чисел от 0 до 99 \n\n"); for (i=0; i



Read



     read

Функция Считывает данные из файла.

Синтаксис #include

int read(int handle, void *buf, unsigned len);

Файл, содержащий io.h прототип

Описание Функция read делает попытку считать len байт из файла, связанного с handle, в буфер, адресуемый параметром buf.

В файле, открытом в текстовом режиме, функция read удаляет символы "возврат каретки" и выдает "конец файла" (EOF), при получении символа Ctrl-Z.

Параметр handle - это тот же самый параметр, что получают на выходе функций creat, open, dup, dup2.

Функция начинает чтение дисковых файлов с текуще- го положения указателя файла. Когда чтение завер- шено, данная функция увеличивает указатель файла на число считанных байт. При работе функции с ус- тройствами, байты данных считываются непосредст- венно с устройства.

Максимально, read может ввести 65534 байта, т.к. 65535 это -1, индикатор ошибки.

Возвращаемое При успешном завершении возвращается положительное значение целое число, являющееся числом байт, помещенных в буфер; причем, если файл открывается в тексто- вом режиме, функция read не включает символы "возврата каретки" и символы Ctrl-z в число счи- танных байтов. По концу файла (EOF), функция воз- вращает нуль.

При ошибке функция возвращает значение -1, и гло- бальной переменной errno присваивается одно из следующих значений:

EACCES - Отказ доступа; EBADF - Неверный номер файла.

Переносимость Функция read поддерживается на системах UNIX.

Смотрите также

Пример:

#include

#include

#include

#include

#include

#include

int main(buffer) { void *buf; int handle,bytes; buf = malloc(10); /* Поиск в текущей директории файла с именем TEST.$$$ и попытка чтения из него 10 байт. Перед запуском этой программы необходимо создать файл TEST.$$$ */ if((handle = open("TEST.$$$",O_RDONLY|O_BINARY))== -1) { printf("Ошибка при открытии файла.\n"); exit(1); } if((bytes = read(handle,buf,10))==-1) { printf("Ошибка чтения.\n"); exit(1); } printf("Считано %d байт.\n",bytes); return 0; }



Real



     real

Функция Возвращает вещественную часть комплексного числа, или преобразует число из двоично-десятичного ко- дирования обратно в float, double или long double.

Синтаксис Определенное в complex: Определенное в bcd: #include #include

double real(complex x); double real(bcd x);

Файл, содержащий complex.h bcd.h прототип

Описание Комплексное число состоит из мнимой и веществен- ной части. real возвращает вещественную часть.

Кроме этого, вы можете использовать real для пре- образования числа в двоично-десятичном кодирова- нии в число типа float, double или long double.

Возвращаемое Вещественная часть комплексного числа. значение

Переносимость Комплексные функции требуют C++ и поэтому непере- носимы.

Смотрите также

Пример 1:

#include

#include

int main(void) { double x=3.1,y=4.2; complex z = complex(x,y); cout

#include

int main(void) { bcd x = 3.1; cout



Realloc



     realloc

Функция Перераспределяет память.

Синтаксис #include

void * realloc(void *block, size_t size);

Файл, содержащий stdlib.h и alloc.h прототип

Описание realloc пытается сжать или увеличить предваритель- выделенный блок до размера в size байт. Аргумент block указывает на блок памяти, полученный при вызове функций malloc, calloc или realloc. Если block является нулевым указателем, realloc рабо- тает также как и malloc.

realloc изменяет размер выделенного блока памяти и при необходимости копирует его содержимое в но- вый блок.

Возвращаемое realloc возвращает адрес блока, который может от- значение личаться от исходного. Если блок не может быть выделен или size равно 0, то realloc возвращает NULL.

Переносимость realloc доступна в системах UNIX и поддерживается стандартом ANSI C.

Смотрите также

Пример:

#include

#include

#include

int main(void) { char *str; /* выделить память под строку */ str = malloc(10); /* скопировать в строку "Hello" */ strcpy(str,"Hello"); /* вывести строку */ printf("Строка: %s\n, Адрес: %p\n",str,str); str = realloc(str,20); printf("Строка: %s\n, Новый адрес: %p\n",str,str); /* освободить память */ free(str); return 0; }



Rectangl



     rectangle

Функция Рисует прямоугольник.

Синтаксис #include

void far rectangle( int left, int top, int right, int bottom );

Файл, содержащий graphics.h прототип

Описание rectangle рисует прямоугольник линией те- кущего вида, толщины и цвета.

(left, top)-координаты левого верхнего угла пря- моугольника, а (right, bottom)-его правый нижний угол.

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

Переносимость Эта функция уникальна для Turbo C++. Она работа- ет только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддер- живающими графический режим.

Смотрите также

Пример:

#include

#include

#include

#include

int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int left,top,right,bottom;

/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } left = getmaxx() / 2 - 50; top = getmaxy() / 2 - 50; right = getmaxx() / 2 + 50; bottom = getmaxy() / 2 + 50; /* рисует прямоугольник */ rectangle(left,top,right,bottom); /* очистка */ getch(); closegraph(); return 0; }



Register



     registerbgifont

Функция Регистрирует встроенный код штриховых символов.

Синтаксис #include

int registerbgifont(void(*font)(void));

Файл, содержащий graphics.h прототип

Описание Вызов registerbgifont информирует графи- ческую систему о том, что шрифт font был включен во время компоновки. Эта программа проверяет свя- занный код для указанного шрифта. Если код пра- вильный, то она регистрирует код во встроенной таблице. Встроенные шрифты описываются подробно в разделе BGIOBJ файла UTIL.DOC.

Используя имя встроенного шрифта в вызове registerbgifont, вы просите компилятор (и редак- тор связей (linker)) встроить объектный файл с открытым именем. Если вы регистрируете шрифт загруженный пользова- телем, вы обязаны передать результат выполнения registerbgifont в initgraph в виде номера шрифта, который будет использоваться.

Возвращаемое registerbgifont возвращает отрицательный значение код графической ошибки, если указанный шрифт являются неверными. В противном случае registerbgifont возвращает номер зарегистрирован- ного шрифта.

Переносимость Эта функция уникальна для Turbo C++. Она работа- ет только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддер- живающими графический режим.

Смотрите также

Пример:

#include

#include

#include

#include

int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int midx,midy;

/* зарегистрировать шрифт, добавленный в graphics.lib */ errorcode = registerbgifont(triplex_font); if(errorcode < 0) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ }

/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx()/2; midy = getmaxy()/2; /* выбрать шрифт */ settextstyle(TRIPLEX_FONT,HORIZ_DIR,4); /* вывести текст */ settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(midx,midy, "The TRIPLEX FONT");

/* очистка */ getch(); closegraph(); return 0; }



Remove



     remove

Функция Удаляет файл.

Синтаксис #include

int remove(const char *filename);

Файл, содержащий stdio.h прототип

Описание remove удаляет файл, имя которого определяется па- раметром filename. Это макрокоманда, которая просто транслируется в вызов unlink. Если файл был открыт не забудьте его предварительно зак- рыть.

Замечание. Строка с именем файла может включать его полный маршрут.

Возвращаемое При успешном завершении remove возвращает 0. При значение ошибке возвращает -1 и присваивает глобальной пе- ременной errno одно из следующих значений:

ENOENT - Такого файла или директории нет; EACCES - Доступ запрещен.

Переносимость remove доступна в системах UNIX и поддерживается стандартом ANSI C.

Смотрите также

Пример: #include

int main(void) { char file[80]; /* запросить имя удаляемого файла */ printf("Введите имя удаляемого файла */ gets(file); /* удалить файл */ if(remove(file)==0) printf("Файл %s удален.\n"); else perror("remove"); return 0; }



Rename



     rename

Функция Переименовывает файл.

Синтаксис #include

int rename(const char *oldname, const char *newname);

Файл, содержащий stdio.h прототип

Описание Функция rename изменяет имя файла с oldname на newname. Если спецификация дисковода включена в имя newname, то она должна быть той же, что и в oldname.

Директории в маршруте (path) не обязательно долж- ны быть теми же самыми, поэтому функцию rename можно использовать для пересылки файла из одной директории в другую. Применять шаблоны не разре- шается.

Возвращаемое При успешном переименовании файла функция rename значение возвращает 0. В случае ошибки, возвращается -1, а глобальная переменная errno получает одно из сле- дующих значений:

ENDENT - Маршрут или имя файла не найдены; EACCES - Отказ доступа; ENOTSAM- Не то же самое устройство.

Переносимость rename поддерживается стандартом ANSI C.

Пример:

#include

int main(void) { char oldname[80],newname[80]; /* запросить имя переименовываемого файла, и новое имя */ printf("Имя переименовываемого файла:"); gets(oldname); promtf("Новое имя:"); gets(newname); if(rename(oldname,newname)==0) printf("Файл переименован с %s в %s\n",oldname,newname); else perror("rename"); return 0; }



Restorec



     restorecrtmode

Функция Восстанавливает видео-режим, к исходному, который был перед вызовом initgraph.

Синтаксис #include

void far restorecrtmode(void);

Файл, содержащий graphics.h прототип

Описание restorecrtmode восстанавливает исходный видео ре- жим, который был определен вызовом initgraph.

Эта функция может использоваться совместно с setgraphmode для переключения между текстовым и графическим режимами. Функция textmode не должна использоваться для этих целей;она используется только если экран нужно перевести из одного текс- тового режима в другой текстовый режим.

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

Переносимость Эта функция уникальна для Turbo C++. Она работа- ет только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддер- живающими графический режим.

Смотрите также

Пример:

#include

#include

#include

#include

int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int x,y;

/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } x = getmaxx()/2; y = getmaxy()/2; /* вывести текст */ settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(midx,midy, "Press any key to exit graphics"); getch(); /* перевести систему в текстовый режим */ restorecrtmode(); printf("Мы теперь в текстовом режиме.\n"); printf("Для возврата в графический режим нажмите любую клавишу.\n"); getch(); /* восстановить графический режим */ setgraphmode(getgraphmode()); /* вывести текст */ settextjustify(CENTER_TEXT,CENTER_TEXT); outtextxy(midx,midy, "We're now back in graphics mode"); outtextxy(midx,midy+textheight("W"),"Press any key to halt:");

/* очистка */ getch(); closegraph(); return 0; }



Rewind



     rewind

Функция Устанавливает указатель в начало потока.

Синтаксис #include

int rewind(FILE *stream);

Файл, содержащий stdio.h прототип

Описание rewind(stream) эквивалентно fseek(stream, 0L, SEEK_SET), за исключением того, что rewind обну- ляет признаки конца файла и ошибки, в то время, как fseek обнуляет только признак конца файла.

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

Переносимость rewind доступна во всех системах UNIX и поддержи- вается стандартом ANSI C.

Смотрите также

Пример:

#include

#include

int main(void) { FILE *fp; char *fname = "TXXXXXX",*newname,first; newname = mktemp(fname); fp = fopen(newname,"w+"); fprintf(fp,"abcdefghijklmnopqrstuvwxyz"); rewind(fp); fscanf(fp,%c,&first); printf("Первый символ: %c",first); fclose(fp); remove(nemname); return 0; }



Rmdir



     rmdir

Функция Удаляет директорию.

Синтаксис #include

int rmdir(const char *path);

Файл, содержащий dir.h прототип

Описание rmdir удаляет директорию, маршрут которой указан в path. Директория в path:

- должна быть полной;

- не должна быть текущей рабочей директорией;

- не должна быть корневой директорией.

Возвращаемое rmdir возвращает 0, если директория была успешно значение удалена. При ошибке возвращает -1 и присваивает глобальной переменной errno одно из следующих значений:

EACCES - Доступ запрещен; ENOENT - Маршрут или файл не найден.

Смотрите также

Пример:

#include

#include

#include

#include

int main(void) { int stat; stat = mkdir("DIRNAME"); if(!stat) printf("Директория создана\n"); else { printf("Не могу создать директорию\n"); exit(1); } getch(); system("dir /p"); getch(); stat = rmdir(DIRNAME); if(!stat) printf("Директория удалена\n"); else { perror("\nНе могу удалить директорию\n"); exit(1); } return 0; }



Rotr



     rotr

Функция Циклический сдвиг вправо целого без знака.

Синтаксис #include

unsigned _rotr(unsigned value, int count);

Файл, содержащий stdlib.h прототип

Описание _rotr производит циклический сдвиг значения value вправо на count разрядов. value рассматривается как целое без знака.

Возвращаемое _rotr возвращает value сдвинутое циклически на значение count разрядов.

Смотрите также

Пример:

#include

#include

int main(void) { unsigned value,result; value = 32767; result = _rotr(value,1); printf("Значение %u сдвинутое на один разряд вправо = %u", value,result); return 0; }