Функция scanf может не работать с оставшимися символами в буфере ввода по нескольким причинам:
- Несоответствие формата. 1 Если во входной строке нет символа, который требуется форматом, функция завершается досрочно с ошибкой несоответствия формата. 1
- Некорректный ввод. 45 Если пользователь вводит символы, которые не могут быть преобразованы в число, scanf оставляет некорректный ввод в стандартном буфере ввода и возвращает 0. 4
- Игнорирование пробельных символов. 1 Все форматы scanf, кроме форматов %[] и %c, пропускают пробельные символы во входном потоке перед началом чтения. 1
При использовании scanf важно учитывать, что при некорректном вводе данные остаются в буфере и пытаются «навязать» себя последующим вызовам функции. 5 Поэтому необходимо очищать буфер в случае некорректного ввода. 5