Вопрос:
Ответ:
Два вызова getchar() нужно для задержки программы (ожидания нажатия Enter) после scanf(). Когда вы вводите данные с клавиатуры, используя scanf(), то функция scanf() "вычитывает" введенные с клавиатуры данные, оставляя в буфере клавиатуры нажатие на Enter (#13). Если после этого вызвать getchar(), то функция считает из буфера клавиатуры этот символ и "подумает", что пользователь нажал Enter, вернет значение. Соответственно, задержки-ожидания нажатия клавиши не получится. Поэтому нам понадобится второй getchar(). Первый "проглотит" оставшийся Enter, второй будет ждать нажатия. При этом, сколько бы раз вы ни вызывали scanf() в вашей программе, в буфере клавиатуры останется только один последний Enter. С предыдущими scanf() справится сам.
Несколько раз в видеоуроках проскакивала фраза о том, что после printf() надо использовать несколько getchar(), но не объяснялось почему (либо я не заметил). Я так подозреваю что это потому что printf не делает перенос на последующую строку. Более того, getchar() адекватно реагирует кажись только на ввод символа, а не на any key типа стрелок. Ввиду этого возможно есть смысл использовать команду _getch()? Она ж вроде работает корректнее?
Ответ:
Два вызова getchar() нужно для задержки программы (ожидания нажатия Enter) после scanf(). Когда вы вводите данные с клавиатуры, используя scanf(), то функция scanf() "вычитывает" введенные с клавиатуры данные, оставляя в буфере клавиатуры нажатие на Enter (#13). Если после этого вызвать getchar(), то функция считает из буфера клавиатуры этот символ и "подумает", что пользователь нажал Enter, вернет значение. Соответственно, задержки-ожидания нажатия клавиши не получится. Поэтому нам понадобится второй getchar(). Первый "проглотит" оставшийся Enter, второй будет ждать нажатия. При этом, сколько бы раз вы ни вызывали scanf() в вашей программе, в буфере клавиатуры останется только один последний Enter. С предыдущими scanf() справится сам.
Комментариев нет:
Отправить комментарий