Работа с консолью
А в этой главе мы рассмотрим библиотеку conio.h, в которой описаны функции используемые операционой системой при вызове процедур работы с консолью. Я не буду описывать некоторые полезные, но имеющие прототипы в других библиотеках, функции. Начнём с насущного - функция clrscr(). Она отчищает экран (тем у кого монитор зарос пылью и весь уделан брызгами и потёками пива она не поможет). Пример:
#include <conio.h>
#include <stdio.h>
main() {
int i;
clrscr();
for (i = 0; i < 1000; i++)
printf("%d", i);
printf("\nPress any key to clear screen");
getchar();
clrscr();
printf("The screen has been cleared!");
getchar();
}
Элементарщина... продолжим. Рассмотрим три полезных функции - функцию gotoxy(X,Y), delline(), insline(). Функция gotoxy(координата X, координата Y) устанавливает курсор в точку с координатами Х и Y. Функция dellime() удаляет строку в текущей позиции курсора. А insline() вставляет строку в текущую позицию курсора. Снова пример:
#include <conio.h>
#include <stdio.h>
main() {
clrscr();
printf("The function DELLINE deletes the line containing the\r\n");
printf("cursor and moves all lines below it one line up.\r\n");
printf("DELLINE operates within the currently active text\r\n");
printf("window. Press any key to continue . . .");
gotoxy(1,2);
getchar();
delline();
getchar();
}
Далее следуют функции "декоротивного плана". Но перед тем, как рассмотреть их нам придётся рассмотреть функции ввода-вывода библиотеки conio.h, потому что оказалось, что "декоротивные" функции действуют только при использовании функции вывода библиотеки conio.h Функции cprintf и cscanf полностью аналогичны функциям printf и scanf. И функция getch() полностью аналогична функции getchar(). Вернёмся к "декоротивным" функциям. Первая троица - функции highvideo, lowvideo и normvideo. Они прибавляют, убавляют и устанавливают в нормальный режим выведеные символы.
#include <conio.h>
main() {
clrscr();
lowvideo();
cprintf("Low Intensity text\r\n");
highvideo();
gotoxy(1,2);
cprintf("High Intensity Text\r\n");
}
Следующая троица - textattr, textbackground и textcolor. Вторая и третья устанавливают цвет фона и цвет такста соответственно. А первая делает и то, и другое.
#include <conio.h>
main() {
clrscr();
textattr(0x5C);
cprintf("First test\n");
getch();
textcolor(0xC);
textbackground(0x5);
cprintf("\rSecond test\n");
getch();
}
Цвета текста и фона можно указывать и десятичными цифрами, но мне так привычней и удобней. Теперь несколько более толковых функций. Во-первых, функции werex() и werey(), необходимые для получения текущего положения курсора
#include <conio.h>
main() {
clrscr();
gotoxy(10,10);
cprintf("Current location is X: %d Y: %d\r\n", wherex(), wherey());
getch();
}
Во-вторых, функции gettext, puttext и movetext. Первая берёт с экрана текст и записывает в память, а вторая берёт из памяти и выводит на экран. Третия же вобще берёт из одной точки экрана и впаривает в другую.
#include <conio.h>
main() {
char buffer[512];
clrscr();
gotoxy(20, 12);
cprintf("This is a test. Press any key to continue ...");
getch();
gettext(20, 12, 36, 21,buffer);
clrscr();
getch();
gotoxy(20, 12);
puttext(20, 12, 36, 21, buffer);
getch();
}
Разжую крапаль... gettext(20, 12, 36, 21,buffer); берёт данные из прямоугольника. Эти 4 цифры (20, 12, 36, 21) координаты двух его углов, buffer это куда писать. puttext(20, 12, 36, 21, buffer); во всём аналогичен. Пример на movetext:
#include <conio.h>
#include <string.h>
main() {
char *str = "This is a test string";
clrscr();
cputs(str);
getch();
movetext(1, 1, strlen(str), 2, 10, 10);
getch();
}
Жую дальше... cputs(str); функция библиотеки conio.h служит для вывода строки на консоль. strlen(str) - функция библиотеки string.h служит для получения длины строки. Остальное всё элементарно. Всё, остальное мы пока трогать не будем...