
osn_progr_final
.pdfФункція frexp повертає мантису m. Якщо x дорівнює 0, функція повертає 0 для мантиси та експоненти.
FSCANF <stdio.h>
int fscanf (stream, format-string [, argument ...]); FILE *stream;
char *format-string;// рядок керування форматом
Зчитує дані з поточної позиції потоку stream у задані аргументи arguments (якщо вони є). Кожен аргумент повинен бути вказівником на тип, що відповідає заданому у рядку формату значенню. Рядок формату впливає на інтерпретацію полів введення і має ту ж саму форму і призначення, що і рядок формату для функції scanf.
Повертає кількість перетворених і призначених полів. При спробі зчитування кінця файлу повертається значення EOF.
FSEEK <stdio.h>
int fseek (stream, offset, origin); FILE *stream;
long offset; //число байт від origin int origin; //початкова позиція
Переміщує файловий покажчик, що відповідає потоку stream, у нову позицію, віддалену від origin на offset байт. Наступна операція потоку виконується з нової позиції покажчика. Аргумент origin може приймати значення однієї з наступних констант, визначених у <stdio.h>:
SEEK-SET |
початок файлу; |
SEEK-CUR |
поточна позиція вказівника на файл; |
SEEK-END |
кінець файлу. |
Повертає значення 0, якщо переміщення файлового покажчика відбулось успішно. У випадку помилки повертається будьяке ненульове значення.
FSTAT <sys\types.h>, <sys\stat.h> int fstat(handle,buffer);
int handle; //дескриптор відкритого файла
struct stat *buffer; //вказівник на структуру збереження результату
Одержує інформацію про відкритий файл, зв’язаний з даним дескриптором і запам’ятовує її в структурі, на яку вказує buffer. Структура stat яка оголошена у <sys\stat.h>, містить наступні поля:
391
st_mode |
Бітова маска для інформації про режим файлу. |
|||
|
Біт S_IFCHR встановлюється, якщо handle поси- |
|||
|
лається на пристрій. Біт S_IFREG встановлюєть- |
|||
|
ся, якщо handle посилається на звичайний файл. |
|||
|
Біти читання/запису користувачів встановлю- |
|||
|
ються відповідно режиму доступу до файла. |
|||
st_dev |
Номер пристрою або диска, що містить файл, |
|||
|
або handle у випадку іншого пристрою. |
|||
st_rdev |
Номер пристрою або диска, що містить файл, |
|||
|
або handle у випадку іншого пристрою (аналогі- |
|||
|
чно st_dev). |
|
|
|
st_nlink |
Завжди 1. |
|
|
|
st_size |
Розмір файла в байтах. |
|
|
|
st_atime |
Час останньої модифікації файла. |
|
||
st_mtime |
Час останньої |
модифікації |
файла |
(аналогічно |
|
st_atime). |
|
|
|
st_ctime |
Час останньої |
модифікації |
файла |
(аналогічно |
st_atime і st_mtime).
FTELL <stdio.h>
long ftell (stream); FILE *stream;
Отримує поточну позицію файлового покажчика (якщо він є), зв’язаного з потоком stream. Позиція знаходиться як зміщення offset від початку потоку stream.
Повертає поточну позицію. У випадку помилки повертається значення -1L. Для пристроїв, не сумісних з операцією seek (таких як термінали та принтери), або якщо потік stream не посилається на відкритий файл, значення, що повертається не визначене.
FTIME <sys\types.h>,<sys\timeb.h> void ftime(timeptr);
struct timeb *timeptr; //вказівник на структуру timeb
Видає поточний час і зберігає його в структурі, на яку вказує timeptr. Структура timeb описана у <sys\timeb.h>. Вона містить 4 поля: time, millitm, timezone, dstflag, які мають на-
ступні значення:
time Час, у секундах, що пройшов від значення 00:00:00 часу по Гринвічу, тобто з 1січня 1970 р.
millitm Залишок у мілісекундах.
392
timezone Різниця в хвилинах (у напрямку до заходу) між значенням часу за Гринвічем і місцевим часом. Значення timezone визначається з значення timezone (див. tzset).
dstflag Ненульове значення, якщо зона переходу на зимовий/літній час є у зоні місцевого часу.
daylight ( див. tzset.)
Значення, що повертається, немає.
FWRITE <stdio.h>
int fwrite(buffer, size, count, stream);
char *buffer; //вказівник на дані, що записуються int size; //розмір елемента в байтах
int count; //максимальна кількість елементів, що записуються
FILE *stream;
Записує count елементів розміром size із buffer у вихідний потік stream. Файловий покажчик, зв’язаний з stream, збільшується на кількість записаних байт.
Функція повертає кількість реально записаних елементів.
GCVT <stdio.h>
char *gcvt(value, ndec, buffer); double value; //вихідне значення
int ndec; //кількість значущих цифр, що запам’ятовуються char *buffer; //пам’ять для збереження результату
Перетворює значення з плаваючою крапкою value у символьний рядок і запам’ятовує його у буфері buffer.
Повертає вказівник на рядок цифр. У випадку помилки нічого не повертається.
GETC – GETCHAR <stdio.h> int getc (stream); FILE *stream;
Макрос getc читає окремий символ з поточної позиції потоку stream і змінює відповідний файловий покажчик так, щоб він вказував на наступний символ.
int getchar();
Макрос getchar ідентичний getc(stdin).
Повертають прочитаний символ або EOF у випадку помилки чи досягнення кінця файлу.
GETCH <conio.h> int getch();
393
Читає окремий символ безпосередньо з консолі без його ехо-відображення. Якщо введено CONTROL-C, система ви-
конує INT 23H.
Повертає прочитаний символ. У випадку помилки нічого не повертається.
GETCHE <conio.h> int getche ();
Читає окремий символ з консолі з ехо-друком. Якщо введено CONTROL-C, система виконує INT 23H.
Повертає прочитаний символ. У випадку помилки нічого не повертається.
GETCWD <direct.h>
char *getcwd(pathbuf,n);
char *pathbuf; //пам’ять для path-імені int n; //максимальна довжина path-імені
Одержує повне path-ім’я поточної папки і запам’ятовує її в pathbuf. Цілий аргумент n визначає максимальну довжину для path-імені.
Повертає pathbuf або NULL у випадку помилки.
GETENV <stdlib.h>.
char *getenv(varname);
char *varname;// ім’я змінної оточення
Повертає вказівник на значення змінної оточення для відповідного імені varname цієї змінної. Змінні оточення визначають оточення, у якому виконується процес (наприклад, значення path для пошуку бібліотек).
Повертає вказівник на значення (рядок) змінної оточення, що містить поточне зачення рядка varname. Повертається значення NULL, якщо шукана змінна в даний момент не визначена.
GETPID <process.h> int getpid();
Повертає ідентифікатор процесу (номер) ID, що унікально визначає процес.
Повертає ідентифікатор процесу ID. У випадку помилки нічого не повертає.
GETS <stdio.h>
char *gets(buffer);
char *buffer; //пам’ять для збереження рядка, що вводиться
394
Читає рядок з потоку stdin і запам’ятовує його в буфері buffer. Рядок складається з набору символів і закінчується символом нового рядка ‘\n’. Перед поверненням функція gets замінює символ нового рядка символом ‘\0’, на відміну від функції fgets, яка зберігає символ нового рядка.
Повертає свій аргумент або NULL у випадку помилки.
GETW <stdio.h>
int getw (stream);
FILE *stream; вказівник на структуру FILE.
Читає двійкове значення типу int з потоку stream і змінює відповідний файловий покажчик (якщо він є) так, щоб він вказував на наступний непрочитаний символ.
Повертає ціле значення або EOF у випадку помилки чи досягнення кінця файла.
GMTIME <time.h>
struct tm *gmtime(time);
long *time;// вказівник на збережений час
Перетворює час, збережений як long-значення у структуру. Поля структури:
tm_sec Секунди tm_min Хвилини
tm_hour Години (від 0 до 24) tm_mday День місяця (від 1 до 31) tm_mon Місяці (від 0 до 11; січень=0) tm_year Рік (поточний рік мінус 1900)
tm_wday День тижня (від 0 до 6; неділя = 0) tm_yday День року (від 0 до 365; 1 січня = 0)
tm_isdst Ненульове значення, якщо здійснений перехід на літній/зимовий час, інакше 0.
HALLOC <malloc.h>
char huge *halloc(n,size); long n; //кількість елементів
unsigned size; //довжина кожного елемента в байтах
Виділяє пам’ять для huge-масиву з n елементів, кожен довжиною size байт. Кожен елемент ініціалізується 0. Якщо розмір масиву менший ніж 128, то розмір елемента масиву повинен бути степенем 2.
Повертає char-huge вказівник на виділений простір.
HFREE <malloc.h>
395
void hfree(ptr);
char huge *ptr; //вказівник на виділений блок пам’яті
Звільняє блок пам’яті. Аргумент ptr вказує на раніше виділений блок пам’яті за допомогою виклику halloc. Значення, що повертається, немає.
HYPOT <math.h>
double hypot(x,y); double x,y;
Обчислює довжину гіпотенузи прямокутного трикутника за довжинами двох сторін x і y. Виклик hypot еквівалент-
ний sqrt(x*x + y*y);
Повертає довжину гіпотенузи.
INP <conio.h>
int inp(port);
unsigned port; // номер порту
Читає один байт із порту введення port. Аргумент port може бути будь-яким беззнаковим цілим у межах від 0 до
65535.
Повертає прочитаний байт із port. У випадку помилки нічого не повертає.
INT86 <dos.h>
int int86(intno,inregs,outregs); int ntno; // номер переривання
union REGS *inregs; // значення регістрів до виклику union REGS *outregs; // значення регістрів після виклику
Виконує переривання, що визначене номером переривання intno. Перед виконанням переривання int86 копіює вміст inregs у відповідні регістри. Після виконання переривання функція копіює значення поточного регістра в outregs. Вона також копіює статус прапорця системи в поле cflag, що міститься в outregs. Аргументи inregs і outregs є об’єднаннями типу REGS. Тип об’єднання оголошений у заголовочному файлі <dos.h>.
INTDOS <dos.h>
int intdos(inregs, outregs);
union REGS *inregs; //значення регістрів до виклику union REGS *outregs; //значення регістрів після виклику
Здійснює виконання системного виклику MS DOS (шляхом виконання команди INT 21H), що визначений значенням
396
регістрів, оголошених у inregs, і повертає результат системного виклику в outregs. Перед виконанням INT 21H копіює вміст inregs у відповідні регістри. Після виконання переривання копіює поточні значення регістрів в outregs. Аргументи inregs і outregs є об’єднаннями типу REGS. Тип об’єднання оголошений у заголовочному файлі <dos.h>.
Повертає значення регістра AX після завершення системного виклику. Якщо поле cflag у outregs є ненулевим, виникає помилка.
INTDOSX <dos.h>
int intdosx(intno,inregs,outregs,segregs);
union REGS *inregs; //значення регістрів до виклику union REGS *outregs; //значення регістрів при поверненні struct SREGS *segregs; //значення сегментів при виклику
Здійснює виконання системного виклику DOS, що визначений значенням регістрів inregs, і повертає результат системного виклику в outregs. На відміну від функції intdos, функція intdosx приймає значення сегментних регістрів в segregs, дозволяючи програмам, що використовують сегменти даних моделі huge чи far-вказівники, визначити, який сегмент чи вказівник повинен бути використаний протягом системного виклику. Аргументи inregs і outregs є об’єднаннями типу REGS. Аргумент segregs є структурою типу SREGS. Ці типи оголошені в include-файлі <dos.h>. Для активізації системного виклику функція intdosx виконує команду INT 21H. Перед виконанням команди функція копіює вміст inregs і segregs у відповідні регістри. У segregs використовуються тільки значення регістрів DS і ES. Після повернення команди INT intdosx копіює поточне значення регістрів в outregs і перезаписує DS. Вона також копіює статус прапорця системи в поле cflag, розміщене в outregs. Якщо це поле є ненульовим, прапорець встановлюється за допомогою системного виклику і вказує на помилку.
Повертає значення регістра AX після завершення системного виклику. Якщо поле cflag у outregs є ненулевим, виникає помилка.
ISALNUM-ISASCII <ctype.h> int isalnum (c);
int c;// вхідний символ
397
Визначає чи належить символ с до алфавітно-цифрового типу (A-Z, a-z, 0-9).
int isalpha(c);
Визначає чи є символ с літерою (A-Z, a-z). int isascii(c);
Визначає чи є символ с кодом ASCII (0x00-0x7F). Повертають ненульове значення, якщо виконуються умови перевірки і нульове значення в противному випадку.
ISATTY <io.h>
int isatty(handle); int handle;
Визначає чи пов’язаний даний дескриптор handle із символьним пристроєм (термінал, консоль, принтер, послідовний порт).
Повертає ненульове значення, якщо пристрій є символьним і 0 в противному випадку.
ISCNTRL-ISXDIGIT <ctype.h> iscntrl(c);
int c;// вхідний символ
Визначає чи є символ с управляючим символом (0х00-
0х1f або 0x7F). isdigit (c);
Визначає чи є с цифрою (0-9). isgraph(c);
Визначає чи є с символом, що друкується (крім символу пропуску) (0х21-0х7e).
islower(c);
Визначає чи є символ с малою літерою (a-z). isprint(c);
Визначає чи є с символом, що друкується (0x20-0x7e) ispunct(c);
Визначає чи є символ с знаком пунктуації (якщо переві-
рки за допомогою isalnum(c), iscntrl(c) і isspace(c) мають не-
гативний результат). isspace(c);
Визначає чи є с символом пропуску (0x09-0x0d чи 0x20). isupper(c);
Визначає чи є символ с великою літерою(A-Z). isxdigit(c);
398
Визначає чи є с шістнадцятковою цифрою (A-F,a-f, 0-9). Повертають ненульове значення, якщо виконуються умови перевірки і нульове значення в противному випадку.
ITOA <stdlib.h>
char *itoa(value,string,radix); int value; //вихідне число
char *string; // рядок результату int radix; //основа value
Перетворює символи числа value у символьний рядок, що закінчується NULL-символом, і запам’ятовує результат у string. Аргумент radix визначає основу системи числення для value; його значення може лежати в межах від 2 до 36. Якщо radix = 10 і value – від’ємне число, те першим символом у рядку результату буде знак мінус.
Повертає вказівник на рядок. У випадку помилки нічого не повертається.
KBHIT <conio.h> int kbhit();
Перевіряє натискання клавіші на консолі.
Повертає ненульове значення, якщо клавіша натиснута і 0 у противному випадку.
LABS <stdlib.h> long labs(n); long n;
Повертає абсолютне значення свого аргумента n.
LDEXP <math.h>
double ldext(x,exp); double x;
int exp;
Повертає значення x, помножене на 2 в степені exp.
LFIND – LSEARCH <search.h>
char *lsearch(key,base,num,width,compare); char *lfind(key,base,num,width,compare); char *key; //ключ пошуку
char *base; //вказівник на пошукову базу даних unsigned num,width; //кількість і розмір елементів
int (*compare)(const void *, const void *); //вказівник на функ-
цію порівняння.
399
Функції lsearch і lfind здійснюють рядковий пошук для значення key у масиві з num елементів розміром по width байт. (На відміну від bsearch, lsearch і lfind не вимагають відсортованості масиву). Аргумент base є вказівником на базу даних масиву, у якому здійснюється пошук key. Якщо key не знайдений, lsearch дописує його в кінець. Функція lfind лише здійснює пошук. Аргумент compare є вказівником на функцію, створену користувачем, що порівнює два елементи масиву і повертає значення, яке визначає співвідношення елементів:
не дорівнює 0 element 1 і element 2 різні;
0 element 1 дорівнює element 2.
Обидві функції lsearch і lfind повертають вказівник на перше знаходження key у масиві, на який вказує base. Якщо key не знайдений, то функції повертають NULL.
LOCALTIME <time.h>
struct tm *localtime(time);
long *time; //вказівник на збережений час
Перетворює час, збережений як значення типу long, у структуру.
Функція localtime повертає вказівник на структуру. У випадку помилки значення, що повертається, немає.
Див.також asctime, ctime, ftime, gmtime, time, tzset. LOCKING <sys\locking.h>, <io.h>
int locking(handle,mode,nbyte);
int handle; // файловий дескриптор int mode; // режим блокування файлу int nbyte; //число блокованих байт
Блокує чи розблоковує nbytes байт файлу, визначеного дескриптором handle. Блокування байт у файлі не дозволяє читання та запис заблокованої області іншими процесами. Розблокування файлу дозволяє іншим процесам читати або записувати байти, заблоковані раніше. Блокування чи розблокування починається з поточної позиції вказівника на файл і поширюється до наступних nbyte байт або до кінця файлу.
Аргумент mode визначає виконувані дії блокування: LK_LOCK Блокування заданих байт. Якщо байти не
вдалось заблокувати, відбувається повторна спроба блокування через 1 секунду. Якщо
400