Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_Mova_S.doc
Скачиваний:
19
Добавлен:
23.02.2016
Размер:
1.14 Mб
Скачать

Функції вводу/виводу нижнього рівня (io.H)

Функція

Опис

Тип ре-зуль-тату

access(char * filename, int amode)

Перевірка атрибутів доступу файлу

int

open(const char *path, int access [,unsigned mode ] );

Відкриття файлу

int

create (char* path, int mode);

Створення нового файлу

int

сlose(int handle);

Закриття файлу

int

dup(int handle);

Створення нового дескриптора для файлу

int

dup2(int oldhandle, int newhandle);

Заміна дескриптора файлу

int

eof(int handle);

Перевірка на кінець файлу

int

error(int handle);

Перевірка прапорця помилок файлу

int

write(int handle, void *buffer, unsigned nbytes);

Запис даних з буфера у файл

int

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

Читання даних з файлу в буфер

int

lseek(int handle, long offset, int whence);

Зміна позиції покажчика файлу

int

tell(int handle);

Повертає поточну позицію вказівника файлу

long

Приклад. Функція read_file читає nbytes байт з позиції pos із файлу, ім’я якого передається функції як аргумент. Функція зберігає прочитані байти в масиві save і повертає кількість прочитаних байтів.

#include <io.h> /* підключення бібліотеки функцій

вводу/виводу нижнього рівня */

#include <stdio.h> /* Потрібна для функцій lseek() i

printf() */

#include <fсntl.h> /* Потрібна для функції open */

#include <sys\stat.h> /* Потрібна для функції open */

#define ERROR -1

long read_file (char *filename, long nbytes, long pos, char *save)

{

int fh,n;

/* Відкрити файл */

if((fh=open(filename, O_RDONLY | O_BINARY)) == ERROR)

{

fprintf(stderr,”Помилка відкриття файлу”%s”\n”,filename);

return(ERROR);

}

/* встановити позицію для читання */

if (lseek(fh, pos, SEEK_SET)==ERROR)

{

printf(stderr,”Помилка встановлення позиції \n”);

return (ERROR);

}

/* Прочитати nbytes байт із файлу */

n=read(fh,save,nbytes);

if(eof(fh))

fprintf(stdeer,”Досягнуто кінець файлу \”%s\”\n”,filename);

close(fh);

return (n);

}

Функції вводу/виводу консолі та порту (conio.H)

Функція

Опис

Тип результату

cgets(char *str);

Читання рядка з консолі

char *

clreol(void);

Знищує частину рядка від поточного положення курсору до правої границі вікна

void

clrscr(void);

Очищає екран або вікно

void

cprintf (const char *format [ arg, ...]); .

Виведення рядка в текстове вікно за форматом

int

cputs(const char *str);

Виведення рядка в текстове вікно

int

cscanf (char *format [, address, ...]);

Читання даних з консолі з виконанням форматного перетворення

int

delline(void);

Знищення поточного рядка в текстовому вікні

void

getch(void);

Читання символа з консолі без ехо-друку

int

getche(void);

Читання символа з консолі з ехо-друком

int

getpass(const char *prompt);

Читання 8 символів з консольного терміналу без ехо-друку

char *

gettext(int left, int top, int right, int bottom,void*dest);

Копіює частину тексту з екрана в заданий буфер

int

gettextinfo(struct text_info*r);

Дає інформацію про текстовий режим

void

gotoxy(int x, int y);

Помістити курсор у вказане місце екрана або текстового вікна

void

highvideo(void);

Встановлює високу яскравість символів

void

insline(void);

Вставка порожнього рядка в текстове вікно

void

inp(unsigned portid);

Читає байт з порту

int

inport(int portid);

Читає 2 байти з порту

int

inportb(int portid);

Читає байт з порту

unsigned char

inpw(unsigned portid);

Читає з порту 2 байти

unsigned

kbhit(void);

Перевірити натискання кнопки

int

lowvideo(void);

Встановлює низьку яскравість символів

void

movetext(int left, int top, int right, int bottom, int destleft, int desttop);

Копіює текст з однієї прямокутної частини екрана в іншу

int

normvideo(void);

Встановлює стандартну яскравість символів

void

outp(unsigned portid, int value);

Записати байт в порт

int

outport(int portid, int value);

Записати 2 байти в порт

void

outportb(int portid, unsigned char value);

Записати байт в порт

void

outpw(unsigned portid, unsigned value);

Записати 2 байти в порт

unsigned

putch(int ch);

Вивести символ в текстове вікно

int

puttext(int left, int top, int right, int bottom, void*source);

Вивести текст із вказаного буферу на екран

int

_setcursortype(int cur_t);

Встановити тип курсора

void

textattr(int newattr);

Встановити колір тексту і тла

void

textbackground(int newcolor);

Встановити колір тла тексту, що виводиться

void

textcolor(int newcolor);

Встановити колір тексту, що виводиться

void

textmode(int newmode);

Встановити текстовий режим

void

ungetch(int ch);

Повертає символ, введений з клавіатури

int

wherex(void); wherey(void);

Повертають відповідно поточну Х або Y-координату

int int

window(int left, int top, int right, int bottom);

Встановити координати поточного текстового вікна

void

Приклади:

// Текстовий режим (символьна графіка):

#include <conio.h>

int main ()

{

clrscr ();

textmode(C40);

gotoxy (20,13);

cprintf (“Hello”);

return 0;

}

//Кольори в текстовому режимі:

#include <conio.h>

int main ()

{

textcolor (RED);

textbackground (GREEN);

cprintf (“Червоне на зеленому”);

return 0;

}

Масиви

Масив – це група елементів однакового типу (double, float, int і т.д.). З опису масиву компілятор повинен одержати інформацію про тип елементів масиву і їхню кількість.

Оголошення масиву має два формати:

<специфікатор типу> <назва>

[<вираз – константа>];

<специфікатор типу> <назва> [];

де

<назва> – ідентифікатор масиву;

<специфікатор типу>задає тип елементів масиву. Елементами масиву не можуть бути функції та елементи типуvoid.

<вираз – константа>у квадратних дужках задає кількість елементів масиву.<вираз – константа>при описі масиву може бути опущений в наступних випадках:

- при описі масив ініціалізується,

- масив описаний як формальний параметр функції,

- масив описаний як посилання на масив, явно визначений в іншому файлі.

У мові С визначені тільки одномірні масиви, але оскільки елементом масиву може бути масив, можна визначити і багатомірні масиви. Вони формалізуються списком виразів-констант, розміщених за ідентифікатором масиву, причому кожен вираз-константа береться у свої квадратні дужки.

Кожен вираз-константа у квадратних дужках визначає число елементів даного виміру масиву, так що опис двомірного масиву містить два вирази-константи, тривимірного – три і т.д. Відзначимо, що в мові С перший елемент масиву має індекс, що дорівнює 0.

Приклади:

int a[2][3]; /* зображається у вигляді

матриці

a[0][0] a[0][1] a[0][2]

a[1][0] a[1][1] a[1][2]

*/

double b[10]; /* вектор з 10 елементів типу

double */

int w[3][3] = { { 2, 3, 4 },

{ 3, 4, 8 },

{ 1, 0, 9 } };

В останньому прикладі ініціалізований масив w[3][3]. Списки, виділені у фігурні дужки, відповідають рядкам масиву. У випадку відсутності дужок ініціалізація буде виконана неправильно.

У мові С, як і в інших мовах високого рівня, можна використовувати перетини масиву. Однак на використання перетинів накладається ряд обмежень. Перетини формуються внаслідок опускання однієї або декількох пар квадратних дужок. Пари квадратних дужок можна відкидати тільки справа наліво і строго послідовно. Перетини масивів використовуються при організації обчислювального процесу у функціях мови С, що розробляються користувачем.

Приклад:

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