Лабораторная работа: Организация ввода-вывода
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
Бесплатно скачать Лабораторная работа: Организация ввода-вывода
|