Да, scanf
читает, пока ввод соответствует формату. В случае несоответствия scanf
прекращает чтение и оставляет остаток в буфере.
Например, если у вас есть
scanf("%d %d", &int_var_1, &int_var_2);
и ввод
123 abc
тогда будет прочитана только часть "123 "
. Буквы "abc"
(и завершающий символ новой строки) будут оставлены во входном буфере для следующей операции ввода для чтения.