Лабораторная работа: Организация ввода-вывода

printf("\nПредыдущие символы :%s\nпeрвoe число = %i",

str, i);

}

4. Вопросы и ответы

Вопрос. Как правильно "заморозить" экран?

Ответ. Некорректно использовать для этой цели вызов функции ввода символа с клавиатуры

getch();

Он нормально сработает, если "разморозить" экран нажатием клавиши, имеющей однобайтовый ascii-код. Это -такие клавиши, как Esc, Enter, Tab, буквы, цифры основной клавиатуры, и т.д.. Функция getch() считывает этот код, и программа продолжается. Но при нажатии некоторых других клавиш в буфер ввода-вывода с клавиатуры записываются два числа: 0 и расширенный код, совпадающий, как правило, со scan-кодом клавиши. Функция getch() считает 0, программа продолжится, а при последующем вызове getch() будет считан оставшийся, ненужный scan-код. Даже если getch() стоял в конце программы, то при повторном запуске программы буфер ввода-вывода с клавиатуры не будет очищен, getch() считает scan-код и программа не "заморозится". Таким образом, программа будет приостанавливаться через раз ! Правильнее будет вставить строку

if( !getch()) getch();

Другой вариант - ожидание в бесконечном цикле нажатия клавиши

while( !kbhit());

Он подходит только в конце программы, т.к. дальнейший вызов getch() считает случайно нажатую клавишу.

Вопрос. Как правильно использовать scanf при вводе?

Ответ. Допустим нужно ввести с клавиатуры возраст человека в переменную Age типа int.

do

{

fflush(stdin);

printf("\nВведите возраст:");

}

while(scanf("%d", &Age) != 1);

fflush(stdin);

printf("\nВозраст = %d", Age); //Отладочная проверка

В реальной программе желательно произвести проверку на осмысленность введенного значения. В данном случае, вероятно, 0 <= Age <= 100. Тогда условие в цикле while может принять вид

while( scanf("%d", & Age) != 1|| 0 > Age || Age > 100);

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

5. Обзор функций ввода-вывода

Таблица 7

Назначение

Имя функции

С каким работает

потоком

К-во Просмотров: 483
Бесплатно скачать Лабораторная работа: Организация ввода-вывода