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

 

РАБОТА С КОНСОЛЬЮ. ФУНКЦИИ ИЗ <CONIO.H>

void

clrscr(void); - очистка текстового окна с позиции (1,1)

void clreol(void); - очистка с текущей позиции до конца строки;

void

window(int left, int top, int right, int bottom); - создает текстовое

окно с координатами левого верхнего угла left, top (x,y), и правого верхнего угла right, bottom (x,y). void textmode(int newmode); -переводит экран в указанный текстовый режим.

Стандартные текстовые режимы:

 

 

Constant

¦Value¦ Text Mode

 

 

----------

+

-----

+----------------------------------

 

 

LASTMODE

¦ -1

¦ Previous text mode

 

 

BW40

¦

0

¦ Black and white

40

columns

C40

¦

1

¦ Color

40

columns

BW80

¦

2

¦ Black and white

80

columns

C80

¦

3

¦ Color

80

columns

MONO

¦

7

¦ Monochrome

80

columns

C4350

¦ 64

¦ EGA and

43-line

 

¦

 

¦ VGA

50-line

void _setcursortype(int cur_t); - устанавливае вид курсора:

_NOCURSOR невидимый курсор, _SOLIDCURSOR в виде прямоугольника, _NORMALCURSOR в виде черты (подчеркивания);

void textcolor(int newcolor); -установка цвета текста (0-15) void textbackground(int newcolor); -установка цвета фона (0-7) void textattr(int newattr); - установка атрибутов текста;

Константы цветов: (0-7) основные цвета (8-15) – яркие.

_____________________¦Back-¦Fore-

Constant

¦Value¦grnd

¦grnd

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

+

-----

+-----

+-----

BLACK

¦

0

¦ Yes

¦ Yes

BLUE

¦

1

¦ Yes

¦ Yes

GREEN

¦

2

¦ Yes

¦ Yes

CYAN

¦

3

¦ Yes

¦ Yes

RED

¦

4

¦ Yes

¦ Yes

MAGENTA

¦

5

¦ Yes

¦ Yes

BROWN

¦

6

¦ Yes

¦ Yes

LIGHTGRAY

¦

7

¦ Yes

¦ Yes

DARKGRAY

¦

8

¦ No

¦ Yes

LIGHTBLUE

¦

9

¦ No

¦ Yes

LIGHTGREEN

¦ 10

¦ No

¦ Yes

LIGHTCYAN

¦ 11

¦ No

¦ Yes

LIGHTRED

¦ 12

¦ No

¦ Yes

LIGHTMAGENTA

¦ 13

¦ No

¦ Yes

YELLOW

¦ 14

¦ No

¦ Yes

WHITE

¦ 15

¦ No

¦ Yes

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

+-----

 

+-----

+------

BLINK

¦128

¦ No

¦ ***

Биты для textattr

 

 

 

7 6 5

4 ¦

3 2 1

0

+---------------

+

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

+

¦ B ¦ b ¦ b ¦ b ¦ f ¦ f ¦ f ¦ f ¦

+---------------

+---------------

+

 

¦

 

In this 8-bit newattr parameter,

_ ffff = 4-bit цвет символов (0 to 15) _ bbb = 3-bit цвет фона (0 to 7)

_ B = бит мерцания

textattr(цветсимволов(0-15) + 16 * цветфона(0-7) [+128]);

или

textattr(цветсимволов(0-15) +(цветфона(0-7)<<4) [+128]);

void highvideo(void); - включение высокой яркости цвета символов; void lowvideo(void); - включение низкой яркости цвета символов; void normvideo(void); - включение нормальной яркости цвета символов;

void gettextinfo(struct text_info *r); - получить информацию о параметрах всех параметрах текущего текстового режима (координаты курсора, координаты и размер текстового окна, текущий текстовый режим, атрибуты цвета текста). Функция возвращает указатель на предопределенную структуру типа text_info.

#include <conio.h>

 

 

int main(void){

 

 

 

struct text_info

ti;

 

gettextinfo(&ti);

 

 

cprintf("window left

%2d\r\n",ti.winleft);

cprintf("window top

%2d\r\n",ti.wintop);

cprintf("window right

%2d\r\n",ti.winright);

cprintf("window bottom

%2d\r\n",ti.winbottom);

cprintf("attribute

%2d\r\n",ti.attribute);

cprintf("normal attribute

%2d\r\n",ti.normattr);

cprintf("current

mode

%2d\r\n",ti.currmode);

cprintf("screen height

%2d\r\n",ti.screenheight);

cprintf("screen width

%2d\r\n",ti.screenwidth);

cprintf("current

x

%2d\r\n",ti.curx);

cprintf("current

y

%2d\r\n",ti.cury);

return 0;

 

 

 

}

 

 

 

window left

1

 

 

window top

1

 

 

window right

80

 

 

window bottom

25

 

 

attribute

7

 

 

normal attribute

7

 

 

current mode

3

 

 

screen height

25

 

 

screen width

80

 

 

current x

1

 

 

current y

1

 

 

void gotoxy(int x, int y); - перемещает курсор в позицию текстового окна с координа-

тами (x, y)

int wherex(void); - возвращает значение горизонтальной координаты курсора; int wherey(void); - возвращает значение вертикальной координаты курсора;

int movetext(int left, int top, int right, int bottom, int destleft, int desttop); копирует прямоугольную область экрана с координатами (left, top, right, bottom)

в область левый верхний угол которой (destleft, desttop). Координаты абсолютные.

void delline(void); - удаляет строку в которой находиться курсор в текстовом окне (сроки расположенный ниже перемещаются вверх, последняя - пустая).

void insline(void); - вставляет строку в позицию в которой находится курсор (строки сдвигаются вниз)

Функции ввода-вывода

int cprintf(const char *format [, argument, ...]); – форматный вывод втек-

стовоеокно;

int cscanf (char *format [, address, ...]); – форматный ввод из текстового окна; int cputs(const char *str); – вывод строки в текстовое окно;

char *cgets(char *str); – ввод строки из текстового окна;

cgets - считывает строку с консоли и записывает строку (и ее длину) в *str.

перед вызовом cgets, необходимо в str[0] указать максимальную длину строки, которую можно считать. cgets считывает строку до carriage-return/linefeed(CR/LF) или до максимально разрешенной длины( CR/LF заменяется \0 ).

cgets возвращает в str[1] число успешно считанных символов, а в сама символьная строка начинается с str[2] и заканчивается \0. Поэтому место строка *str должна быть не короче (str[0] + 2). В случае успеха cgets возвращает указатель на str[2].

int main(void) {

char *p, buffer[83], ;

/* There's space for 80 characters plus the NULL terminator */ buffer[0] = 81;

printf("Input some chars:"); p = cgets(buffer);

printf("\ncgets read %d characters: \"%s\"\n", buffer[1], p); printf("The returned pointer is %p, buffer[0] is at %p\n", p,

&buffer); return 0;

}

int getch(void); считывает символ с консоли без отображения его на экране;

int getche(void); - считывает символ с консоли с «эхом»(отображая его на экране); int putch(int ch); – вывод символа в текстовое окно;

int gettext(int left, int top, int right, int bottom, void*destin); - ко-

пирует текст сэкрана (втекстовом режиме) в память.

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

копирует текст из памяти наэкрана (втекстовом режиме).

Все координаты абсолютные. Место необходимое для хранения участка размером (h строк) на (w столбцов) - bytes = (h rows)x (wcolumns)x 2 (x 2 – так как требуется хранить код символа – 1 байт и атрибуты символа – 1 байт)

#include <conio.h> char buffer[4096]; int main(void){

int i;

clrscr();

for (i = 0; i <= 20; i++) cprintf("Line #%d\r\n", i);

gettext(1, 1, 80, 25, buffer);

gotoxy(1, 25); cprintf("Press any key to clear screen..."); getch(); clrscr();

gotoxy(1, 25);cprintf("Press any key to restore screen..."); getch();

puttext(1, 1, 80, 25, buffer);

gotoxy(1, 25);cprintf("Press any key to quit..."); getch(); return 0;

}

<dos.h>

void sound(unsigned frequency); void nosound(void);

void delay(unsigned milliseconds);

#include<dos.h> // телефонный звонок #include<conio.h>

void main(){ int i;

do {

for(i=0; i<100; i++){ sound(1200); delay(10); nosound();

}

delay(800);

}

while(!kbhit());

}

Соседние файлы в папке C_II_семестр