Аппаратное обеспечение IBM PC



         

Клавиатурные функции библиотеки Microsoft C - часть 2


Приведем пример программы, ожидающей нажатия на любую клавишу. Во время ожидания программа выводит на экран поочередно символы "<" и ">":

#include <conio.h>

void main() {

int key;

// Ожидаем нажатия на любую клавишу. // Во время ожидания выводим на экран поочередно // символы "<" и ">"

while(!kbhit()) printf("<\b>\b");

// Как только будет нажата какая-нибудь клавиша, // выводим ее ASCII-код

key = getch();

// Если прочитанный символ равен 0, вызываем функцию getch() // для получения расширенного ASCII-кода нажатой клавиши

if( (key == 0) (key == 0xe0) ) { key = getch(); printf( "Расширенный ASCII-код:\t" ); }

else printf( "ASCII-код:\t");

printf("%d\n",key); }

Для ввода с клавиатуры строки символов можно использовать функцию cgets(), работающую аналогично функции 0Ah прерывания MS-DOS INT 21h:

char *cgets(char *buffer);

Функция описана в файле conio.h.

Перед вызовом аргумент функции buffer должен указывать на массив, размер которого должен быть достаточным для хранения вводимой строки, завершающего строку нулевого байта и двух дополнительных байтов. Первый элемент массива buffer[0] должен содержать максимальную длину вводимой строки - как и для функции 0Ah прерывания MS-DOS INT 21h.

После завершения ввода второй элемент массива buffer[1] будет содержать длину введенной строки, сама строка будет завершаться символами новой строки NL, перевода строки LF и нулем.

Функция cgets() возвращает указатель на начало введенной строки в буфере, т.е. на третий элемент массива buffer[2].

Приведем простой пример, в котором функция cgets() используется для ввода целого числа:

#include <stdlib.h> #include <string.h> #include <conio.h>

#define MAX 80

char buf[MAX];

void main() { int i; char *bufptr;

// Устанавливаем максимально допустимую длину строки

buf[0] = MAX + 2;

printf("\nВведите целое число: ");

// Вводим число, можно использовать клавиши редактирования




Содержание  Назад  Вперед