русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Клавиатурный тренажер - Пример


Дата добавления: 2013-12-23; просмотров: 1086; Нарушение авторских прав


Эта программа может служить в качестве клавиатурного тренажера и является примером нека­нонического ввода. Она выводит на экран строку текста, и пользователь должен напечатать ее. Символы по мере ввода проверяются. Если введен неправильный символ, программа издает звуковой сигнал и печатает звездочку. Если введен правильный символ, он выводится на экран. Программа работает так:

15-20 Терминальный специальный файл открывается для чтения, и его текущий режим запи­сывается в структуру termios. Библиотечная функция isatty(3F) проверяет, связан ли файловый дескриптор 1 с терминалом. Иными словами, эта программа не должна исполняться с использо­ванием перенаправления стандартного ввода/вывода shell. Функция isatty описана на странице руководства ttyname(3F).

22-24 Терминальный интерфейс переводится в режим неканонического ввода без эхо и без об­работки специальных символов.

25 Вызовом стандартной библиотечной функции setbuf(3) запрещается локальная буферизация в библиотечных функциях вывода. Это приводит к тому, что putchar(3) в следующих строках бу­дет немедленно вызывать write(2) в стандартный вывод.

28-37 Этот цикл читает по одному символу и сравнивает его с соответствующим символом строки text. Если символ введен правильно, он немедленно выводится на терминал. Иначе изда­ется звуковой сигнал и на терминал выводится звездочка.

Ниже приведен пример работы программы:

$ typtut

Type in beneath the following line

 

The quick brown fox jumped over the lazy dog's back

The *uick b*own f** jumped over t*e lazy dog's back

 

number of errors: 5

 

Файл: typtut.c

КЛАВИАТУРНЫЙ ТРЕНАЖЕР - ПРИМЕР НЕКАНОНИЧЕСКОГО ВВОДА

 

1 #include <unistd.h>

2 #include <stdio.h>

3 #include <fcntl.h>

4 #include <termios.h>

5 #include <string.h>



6 #include <stdlib.h>

8 main()

9 {

10 char ch, *text =

11 "The quick brown fox jumped over the lazy dog\'s back";

12 int fd, i, errors = 0, len;

13 struct termios tty, savtty;

15 fd = open("/dev/tty", O_RDONLY);

16 tcgetattr(fd, &tty);

17 if (isatty(fileno(stdout)) == 0) {

18 fprintf(stderr,"stdout not terminal\n");

19 exit(1);

20 }

21 savtty = tty;

22 tty.c_lflag &= ~(ISIG | ICANON | ECHO);

23 tty.c_cc[VMIN] = 1; /* MIN */

24 tcsetattr(fd, TCSAFLUSH, &tty);

25 setbuf(stdout, (char *) NULL);

26 printf("Type beneath the following line\n\n%s\n", text);

27 len = strlen(text);

28 for (i = 0; i < len; i++) {

29 read(fd, &ch, 1);

30 if (ch == text[i])

31 putchar(ch);

32 else {

33 putchar('\07');

34 putchar('*');

35 errors++;

36 }

37 }

38 tcsetattr(fd, TCSAFLUSH, &savtty);

39 printf("\n\nnumber of errors: %d\n", errors);

40 }

 



<== предыдущая лекция | следующая лекция ==>
Неканонический ввод | Программа просмотра файла - Пример


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.07 сек.