Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Функции ввода/вывода с консольного терминала






Править] Члены-функции

int kbhit(void) Определяет, было ли нажатие клавиш клавиатуры
int ungetch(int c) Помещает символ c обратно в буфер клавиатуры.
int getch(void) Считывает символ напрямую из консоли без использования буфера и echo-вывода.
int getche(void) Считывает символ напрямую из консоли без использования буфера, но с использованием echo-вывода.
int putch(int c) Функция _putch выводит символ c в консоль без буферизации. В случае успеха возвращает c. В противном случае возвращает EOF.
char *_cgets(char *buffer) Считывает строку из консоли и хранит ее в массиве, указывающим на буфер. buffer[0], должен содержать максимальную длину (в символах) строки, то есть сколько символов нужно считать. Второй элемент массива buffer[1] указывает «где». _cgets хранит текущую длину строки. _cgets считывает символы до символа возврата, перевода строки или указанного максимума числа символов.
int _cprintf(const char *format, arg0,... argn) Форматирование и вывод («печать») строки напрямую в консоль.
int _cputs(const char *string) Вывод строки напрямую в консоль.
int _cscanf(char *format, arg0,... argn) Считывание и форматирование данных напрямую из консоли.

 

Функции ввода/вывода с консольного терминала

Функции ввода/вывода для консоли используют специфические особенности IBM‑ совместимого компьютера, такие как наличие специального видеоадаптера, и не являются переносимыми на другие типы компьютеров. Прототипы функций содержатся в файле conio.h. Консольные функции позволяют читать и записывать строки (cgets и cputs), форматированные данные (cscanf и cprintf) и отдельные символы. Функция kbhit определяет, было ли нажатие клавиши и позволяет определить наличие символов для ввода с клавиатуры до попытки чтения.

Во‑ первых, существуют функции для работы с окном консоли, аналогичные библиотеке Crt Паскаля. В табл. 8.13 кратко перечислены основные из них.

 

Таблица 8.13. Функции для работы с окном консоли

Функция Краткое описание
window void window(int left, int top, int right, int bottom); Устанавливает текущее окно консоли по указанным координатам
clrscr void clrscr(void); очищает текущее окно
clreol void clreol(void); очищает текущую строку окна от позиции курсора до конца
delline void delline(void); удаляет строку окна, в которой установлен курсор
insline void insline(void); вставляет пустую строку в позиции курсора
gotoxy void gotoxy(int x, int y); перемещает курсор в указанные столбец (x) и строку (y) окна
textbackground void textbackground(int newcolor); устанавливает указанный фоновый цвет окна. Цвета указываются номерами 0‑ 15 или названиями, определенными в conio.h (BLUE, GREEN и т. д.)
textcolor void textcolor(int newcolor); устанавливает указанный цвет вывода текста в окне. Цвета указываются аналогично функции textbackground
wherex int wherex(void); возвращает номер столбца окна, в котором находится курсор
wherey int wherey(void); возвращает номер строки окна, в которой находится курсор

 

Во‑ вторых, в файле conio.h описаны прототипы ряда специфичных для Си функций (см. табл. 8.14).

 

Таблица 8.14. Функции ввода/вывода для консоли

Функция Краткое описание
cgets char *cgets(char *str); чтение строки с консоли до комбинации CR/LF или достижения максимально возможного числа символов. Если cgets читает комбинацию CR/LF, она заменяет ее на нулевой байт перед сохранением строки. Перед вызовом функции str[0] должен быть установлен в максимально возможное число символов для чтения. В случае успеха str[1] содержит реально прочитанное число символов, возвращается указатель на str[2]. При чтении комбинации CR/LF она заменяется нулевым байтом. Нулевой байт добавляется в конец строки. Таким образом, длина буфера должна быть не меньше str[0]+2 байт.
cprintf int cprintf(const char *format[, argument,...]); запись данных на консольный терминал по формату. Требования к строке формата и последующим аргументам аналогичны функции fprintf. Не переводит '\n' (символ LF) в пару символов '\r\n' (CR/LF). В случае успеха вернет число выведенных символов, в случае ошибки - EOF.
cputs int cputs(const char *str); вывод строки в текущее окно консольного терминала, определенное по умолчанию или функцией window. Не добавляет символов новой строки.
getch int getch(void); чтение символа с консоли. Символ не отображается на экране (нет эхо‑ печати). Вернет код символа.
getche int getche(void); чтение символа с консоли с эхо‑ печатью. Вернет код символа.
kbhit int kbhit(void); проверка нажатия клавиши на консоли. Пример: while (! kbhit()) /*до нажатия клавиши */; cprintf(" \r\nНажата клавиша...");
putch int putch(int c); Вывод символа на консольный терминал. Не переводит '\n' (символ LF) в пару символов '\r\n' (CR/LF). В случае успеха вернет символ, в случае ошибки - EOF
ungetch int ungetch(int ch); возврат последнего прочитанного символа с консольного символа обратно с тем, чтобы он стал следующим символом для чтения. Ограничения те же, что для ungetc.

Приведенный ниже пример демонстрирует чтение строки с помощью функции cgets.

char buffer[83];

char *p;

/* Место для 80 символов + нулевого байта */

buffer[0] = 81;

printf(" Введите строку: ");

p = cgets(buffer);

printf(" \ncgets прочитала %d \

символов: \" %s\" \n", buffer[1], p);

printf(" Возвращен указатель %p, \

buffer[0] содержит %p\n", p, & buffer);

В следующем примере строка текста печатается в центре стандартного окна консоли.

#include < conio.h>

int main(void){

clrscr();

gotoxy(35, 12);

textcolor (RED);

cprintf(" Hello world");

getch();

return 0;

}

Наконец, приведенный далее код демонстрирует обработку нажатий клавиш для консольного терминала.

#include < stdio.h>

#include < conio.h>

int main(void) {

int ch;

do {

ch=getch();

if (ch=='\0') { //расширенный код

ch=getch();

switch (ch) {

case 72: printf (" \nUp"); break;

case 80: printf (" \nDown"); break;

case 75: printf (" \nLeft"); break;

case 77: printf (" \nRight"); break;

default: printf

(" \nExtended key %2d", ch); break;

}

}

else {

switch (ch) {

case 13: printf (" \nEnter"); break;

case 27: printf (" \nEsc"); break;

default: printf (" \nKey %4d", ch);

break;

}

}

} while (ch! =27);

}

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.