Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

osn_progr_final

.pdf
Скачиваний:
37
Добавлен:
12.02.2016
Размер:
3.27 Mб
Скачать

 

після 10 спроб байти не заблокувалися, по-

 

вертається помилка.

LK_RLCK

Аналогічно LK_LOCK.

LK_NBLCK

Блокування заданих байт. Якщо байти не за-

 

блоковані, повертається помилка.

LK_NRLCK

Аналогічно LK_NBLCK.

LK_UNLCK

Розблокування заданих байт. Байти повинні

 

бути раніше заблоковані.

Повертає 0, якщо функція виконалась успішно і -1 у випадку помилки.

LOG-LOG10 <math.h> double log(x); double x;

Обчислює натуральний логарифм x. double log10(x);

double x;

Обчислює десятковий логарифм x.

LONGJMP <setjmp.h>

void longjmp(env, value);

jmp_buf env; //змінна, у якій зберігається оточення

int value; //значення, що повертається при виклику setjmp. Відновлює стан стека, раніше збережений у змінну env

функцією setjmp.

Значення, що повертається, немає. Див. також setjmp.

LSEEK <stdio.h>

long lseek (stream, offset, origin); int handle;

long offset; // число байт з позиції origin int оrіgіn; //початкова позиція

Переміщує файловий покажчик (якщо він є), зв’язаний з дескриптором handle, у нову позицію, що задається зміщенням offset байт з позиції origin.

Аргумент origin може бути однією з наступних констант, ви-

значених у <stdio.h>.

SEEK-SET

початок файлу;

SEEK-CUR

поточна позиція вказівника на файл;

SEEK-END

кінець файлу.

401

Функція lseek повертає зміщення у байтах нової позиції від початку файлу. У випадку помилки повертається -1.

LTOA <stdlib.h>

char *ltoa(value,string,radix); int value; //вихідне число

char *string; //рядок результату int radix; //основа value

Перетворює символи числа value у символьний рядок, що закінчується NULL-символом, і запам’ятовує результат у string. Аргумент radix визначає основу системи числення для value; його значення може лежати в межах від 2 до 36. Якщо radix = 10 і value – від’ємне число, то першим символом результуючого рядка буде знак мінус.

Функція ltoa повертає вказівник на рядок. У випадку помилки нічого не повертається.

Див.також itoa, ultoa.

MALLOC <malloc.h>

char *malloc(size);

unsigned size; // кількість байт у виділеному блоці

Виділяє блок пам’яті принаймні не менший, ніж size байт. Блок може бути більшим, ніж size байт з врахуванням вирівнювання.

Повертає char-вказівник на виділену область.

MATHERR <math.h> int matherr(x);

struct exception *x; //інформація про математичне виключення Обробляє помилки, породжені функціями математичної бібліотеки. Математичні функції викликають matherr, коли виявлена помилка. Користувач може використовувати різні оголошення для функції matherr, що виконують обробку спеціальних помилок. Якщо в математичній процедурі виникла помилка, matherr викликається з вказівником на структуру

exeption (оголошену в <math.h>) як аргумент. struct exeption {

int type; char *name;

double arg1, arg2, retval; };

402

Type визначає тип математичної помилки. Він може приймати наступні значення:

DOMAIN

Помилка області визначення аргументу;

SING

Особливість аргументу;

OVERFLOW

Помилка переповнення;

UNDERFLOW

Помилка діапазону втрати значимості;

TLOSS

Загальна втрата значимості;

PLOSS

Часткова втрата значимості.

Елемент структури name є вказівником на рядок, що закінчується нульовим символом і містить ім’я функції, що викликала помилку. Елементи структури arg1 і arg2 визначають значення аргументів функції (Якщо заданий тільки один аргумент, він запам’ятовується у arg1). Для заданої помилки за замовчуванням повертається значення retval.

Функція matherr у випадку помилки повертає 0 і ненульове значення, якщо дія успішно виконана.

_MEMAVL <malloc.h> unsigned int_memavl();

Функція _memavl повертає приблизний розмір пам’яті в байтах, доступної для динамічного розміщення в біжучому сегменті даних. Ця функція може використовуватися з calloc, malloc, realloc у малій і середній моделях пам’яті і з _nmalloc в усіх моделях пам’яті.

Функція _memavl повертає розмір у байтах як беззнакове ціле.

Див. також calloc, malloc, _freect, realloc, stackavail. MEMCCPY <memory.h>,<string.h>

char *memccpy(dest,src,c,cnt);

char *dest; // вказівник на результат

char *src; // вказівник на вихідний буфер int c; //останній символ, що копіюється insigned cnt; // кількість символів

Копіює 0 чи більше байт з src у dest аж до першої появи символу, зазначеного в змінній c (і включаючи його), або поки не буде скопійовано cnt байт.

Якщо символ c скопійований, memccpy повертає вказівник на той байт у dest, що безпосередньо слідує за символом. Якщо c не був скопійований, memccpy повертає NULL.

Див. також функції memchr, memcmp, memcpy, memset.

403

MEMCHR <memory.h>,<string.h> char *memchr(buf,c,cnt);

char *buf; //вказівник на буфер int c; //символ, що копіюється unsigned cnt; //кількість символів

Знаходить перші cnt байт з buf з метою виявлення першої появи символу c. Пошук продовжується до тих пір, поки не буде знайдений зазначений символ чи не будуть перевірені усі cnt байт.

Повертає вказівник на розташування символу c у buf. Якщо символ c не буде виявлений у перших cnt байтах buf, повертається NULL.

Див. також memccpy, memcmp, memcpy, memset.

MEMCMP <memory.h>, <string.h> int memcmp(buf1,buf2,cnt); char *buf1; //перший буфер char *buf2; //другий буфер

unsigned cnt; //кількість символів

Функція memcmp здійснює лексикографічне порівняння перших cnt байт з buf1 і buf2 та повертає значення, що вказує на співвідношення буферів:

ЗНАЧЕННЯ

ЗМІСТ

Менше 0

buf1 менший, ніж buf2;

0

buf1 ідентичний buf2;

Більше 0

buf1 більший, ніж buf2.

Див. також memccpy, memchr, memcpy, memset.

MEMCPY <memory.h>, <string.h> char memcpy (dest, src, cnt);

char *dest; //вказівник на результат

char *src; //вказівник на вихідний буфер unsigned cnt; //кількість символів

Копіює cnt байт з src у dest. Якщо деякі ділянки src і dest перекриваються, memcpy гарантує, що байти з ділянки, що перекривається, у src будуть збережені перед перезаписом.

Повертає вказівник на dest.

Див. також memccpy, memchr, memcmp, memsct.

MEMICMP <memory.h>, <string.h> int memicmp (buf1, buf2, cnt); char *buf1; //перший буфер

404

char *buf2; //другий буфер unsigned cnt; //кількість символів

Лексикографічно порівнює перші cnt байт з buf1 і buf2, не враховуючи регістр.

Функція memicmp повертає значення, що вказує співвідно-

шення buf1 і buf2 (див. memcmp).

Див. також memccpy, memchr, memcmp, memcpy, memset. MEMSET <memory.h>, <string.h>

char *memset (dest, c, cnt);

char *dest; //вказівник на результат int c; //символ-заповнювач unsigned cnt; //кількість символів

Заповнює перші cnt байт буфера dest символом c. Повертає вказівник на буфер dest.

Див. також memccpy, memchr, memcmp, memcpy.

MKDIR <direct.h>

int mkdir(pathname);

char *pathname; //path-ім’я нової папки

Cтворює нову папку із заданим іменем pathname. Повертає значення 0, якщо успішно створено нову папку і -1, якщо виникла помилка.

MKTEMP <io.h>

char *mktemp(template);

char *template; //шаблон імені файлу

Створює унікальне ім’я файлу, модифікуючи template. Аргумент template має форму:

baseXXXXXX,

де base є частиною нового імені файлу, що пропонується користувачем і X...X є знакосимволами для частини, що формується mktemp; mktemp зберігає base і заміняє шість Х алфавітним символом, за яким слідує значення з 5 цифр. 5-цифрове значення є унікальним номером, що ідентифікує викликаний процес. При першому виклику mktemp із заданим template алфавітний символ дорівнює символу ‘0’. У наступних викликах з того ж самого процесу з тим же самим шаблоном template mktemp визначає,чи використовувалися раніше повернуті імена для створення файлів. Якщо файлу із заданим ім’ям не існує, mktemp повертає це ім’я. Якщо для всіх раніше повернутих імен файли існують, mktemp створює нове

405

ім’я, замінюючи в ньому наступний алфавітний символ доступною літерою нижнього регістра. Наприклад, якщо перше повернуте ім’я було t012345 і це ім’я використовувалося для створення файлу, то наступне ім’я, що повертається, буде ta12345. При створенні нових імен mktemp використовує ‘0’ і букви нижнього регістра від "a" до "z".

Функція mktemp повертає вказівник на модифікований template. Значенням, що повертається, є NULL, якщо аргумент template утворений невірно чи більше не може бути створено унікальних імен із заданого шаблона template.

Див. також fopen, getpid, open.

MODF <math.h>

double modf(x,intptr); double x;

double *intptr; //вказівник для збереження цілої частини Розриває значення з плаваючою крапкою x на дробову і

цілу частини. Повертається знакова дробова частина x. Ціла частина зберігається в intptr як значення з плаваючою крапкою.

Повертає знакову дробову частину x. У випадку помилки нічого не повертається.

Див. також frexp, ldexp.

MOVEDATA <memory.h>,<string.h>

void movedata (srcseg, srcoff, destseg, destoff, nbytes); int srcseg; //адреса вихідного сегмента

int srcoff; //зміщення вихідного сегмента

int destseg; //адреса результуючого сегмента int destoff; //зміщення результуючого сегмента unsigned nbytes; //кількість байт

Копіює nbytes байт, починаючи з вихідної адреси, позначеної srcseg:srcoff, у адресу результату, позначену destseg:destoff. Функція movedata призначена для пересилання far-даних у програмах малих чи середніх моделей, де адреси сегментів даних не відомі.

Значення, що повертається, немає.

Див. також memcpy, segread, FP_SEG.

_ MSIZE <malloc.h> unsigned_msize(ptr);

char *ptr; //вказівник на блок пам’яті

406

Повертає розмір блоку пам’яті (у байтах), виділеного за допомогою викликів calloc, malloc чи realloc.

Див. також calloc, _expand, malloc, realloc.

_NFREE <malloc.h> void _nfree(ptr);

char near *ptr; // вказівник на виділений блок пам’яті Звільняє блок пам’яті, виділеної раніше _nmalloc.

Значення, що повертається, немає.

Див. також _nmalloc, free, malloc.

_NMALLOC <malloc.h>

char near *_nmalloc(size);

unsigned size; //кількість байт у виділеному блоці

Функція _nmalloc всередині біжучого сегмента даних виділяє блок пам’яті, принаймні не менший, ніж size байт. Блок може бути більшим, ніж size байт, з врахуванням вирівнювання.

Повертає near-вказівник на char або NULL, якщо пам’ять не була виділена.

Див. також _nrfee, _msize, malloc, realloc.

_NMSIZE <malloc.h> unsigned _nmsize(ptr);

char near ptr; //вказівник на блок пам’яті

Повертає розмір блоку пам’яті в байтах, виділеного за допомогою _nmalloc.

Повертає розмір у байтах, як беззнакове ціле.

Див. також _ffree, _fmalloc, _fmsize, malloc, _msize,_nfree,

_nmalloc. ONEXIT <stdlib.h>

onexit_t onexit(func); onexit_t func;

Передає адресу функції (func), яка буде виконана, якщо програма нормально завершиться.

Повертає вказівник на функцію або NULL у випадку помилки.

OPEN <fcntl.h>, <sys\types.h>, <sys\stat.h>, <io.h> int open(pathname, oflag [[, pmode]]);

char *pathname; // path-ім’я файлу int oflag; //доступний тип операцій

int pmode; // дозволений тип доступу.

407

Відкриває файл з path-ім’ям і готує його до наступного читання чи запису, що визначається за допомогою oflag. Аргумент oflag є цілим виразом, що складається з комбінації однієї чи більше констант, оголошених у <fcntl.h>.

O_APPEND

Вказівник на файл переміщується у кінець

 

файлу перед кожною операцією запису.

O_CREAT

Новий файл створений і відкритий для за-

 

пису.

 

 

 

 

O_EXCL

Повертається значення помилки, якщо іс-

 

нує файл з path-ім’ям. Застосовується тіль-

 

ки разом з O_CREATE.

 

 

O_RDONLY

Файл відкритий тільки для читання; якщо

 

задається цей прапорець, може бути зада-

 

ний

або прапорець

O_RDWR, або

 

O_WRONLY.

 

 

 

O_RDWR

Файл відкритий одночасно для читання і

 

запису; якщо задається цей прапорець, мо-

 

же

бути

обраний

або

прапорець

 

O_RDONLY, або O_WRONLY.

 

O_TRUNC

Існуючий файл відкривається і відсікається

 

до довжини 0; цей файл повинен мати до-

 

звіл на запис. Вміст файлу знищується.

O_WRONLY

Файл відкритий тільки для читання; якщо

 

встановлено цей прапорець, повинен бути

 

встановлений

також

прапорець

 

O_RDONLY або ORDWR.

 

 

O_BINARY

Файл відкритий у бінарному режимі.

O_TEXT

Файл відкритий у текстовому режимі.

Аргумент pmode потрібен тільки тоді, коли визначена константа O_CREAT. Якщо файл існує, pmode ігнорується. В противному випадку pmode визначає дозволені типи доступу для файлу, що встановлюються під час першого закриття нового файлу.

Pmode – цілий вираз, що містить одну чи обидві константи

S_IREAD, S_IWRITE, оголошені в <sys\stat.h>. Коли задано обидві константи, вони об’єднуються логічним оператором АБО (|).

Значення аргументів pmode:

S_IWRITE дозволяє запис;

408

S_IREAD

дозволяє читання;

S_IREAD|S_IWRITE дозволяють читання і запис.

Ця функція повертає дескриптор handle створеного файлу або -1, якщо виникла помилка.

OUTP <conio.h>

int outp(port, value); unsigned port; //номер порту

int value; //виведене значення

Записує значення value у вихідний порт, визначений як port. Аргумент port може бути будь-яким беззнаковим цілим у межах від 0 до 65535, value може бути будь-як цілим у межах від 0 до 255.

Див. також inp.

PERROR <stdlib.h>

void perror(string);

char *string; //повідомлення, що задається користувачем int errno; //лічильник помилок

int sys_nerr; //кількість системних повідомлень

char sts_errlist[sys_nerr]; //масив повідомлень про помилки.

Друкує повідомлення про помилку в stderr. У цьому повідомленні аргумент string друкується першим, потім друкується двокрапка, системне повідомлення про помилку для останнього бібліотечного виклику, що згенерував помилку, і новий рядок. Номер помилки зберігається у зміннії errno, що оголошена на зовнішньому глобальному рівні. Системне повідомлення про помилку доступне через змінну sys_errlist, що є масивом повідомлень. Значення змінної sys_nerr визначається як максимальне число елементів масиву sys_errlist.

Функція perror не повертає ніякого значення.

Див. також clearerr, ferror, strerror.

POW <math.h>

double pow(x,y); double x;

double y; //степінь числа x Обчислює x у степені y.

PRINTF <stdio.h>

int printf (format-string [, argument...]);

char *format-string; //рядок керування форматом.

409

Функція printf форматує і друкує набори символів і значень у вихідний стандартний потік stdout. Рядок формату містить два типи об’єктів: звичайні символи, що просто копіюються у вихідний потік, і специфікації перетворень, кожна з яких викликає перетворення і друк чергового аргументу printf.

Кожна специфікація перетворення починається з символу % і закінчується символом перетворення. Між % і символом перетворення можуть розміщуватись:

%[flags][wigth][.precision][{F:N:h:I}]type

Можливі значення flags:

FLAG

Значення

За

замовчуван-

 

 

ням

 

 

-

Зсув результату вліво всередині

Зсув вправо.

 

поля wigth.

 

 

 

+

Приєднання знака до значення,

Знак

 

що виводиться, якщо воно має

з’являється ли-

 

знаковий тип.

ше

 

для

 

 

від’ємних зна-

 

 

кових значень.

blank(‘ ‘)

До значення, що виводиться,

Без пропуска.

 

приєднується ‘ ‘, якщо воно є

 

 

 

 

знаковим та додатнім; прапорець

 

 

 

 

"+" відхиляє blank, якщо встано-

 

 

 

 

влені обидва, і додатнє знакове

 

 

 

 

значення виводиться разом з зна-

 

 

 

 

ком.

 

 

 

 

 

 

#

При використанні з форматами o,

Без префікса.

 

x, X, прапорець # при’єднує до

 

 

 

 

кожного ненульового виведеного

 

 

 

 

значення відповідно, 0, 0х, 0Х.

 

 

 

 

Коли прапорець # використову-

 

 

 

 

ється у форматі e, E, f, то він ви-

 

 

 

 

значає наявність десяткової кра-

 

 

 

 

пки.

 

 

 

 

 

Десяткова

кра-

 

Коли прапорець # використову-

пка

з’являється

 

ється у форматі g, G, то він ви-

лише тоді, коли

 

значає наявність десяткової кра-

за

нею

йдуть

410

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]