Стандартный ввод буферизован.
Ваш код не увидит буфер до тех пор, пока он (стандартный ввод) не будет очищен.
Это происходит, когда буфер заполняется или вставляется '\ n' (клавиша ввода).
Поскольку scanf () является блокирующим вызовом ввода / вывода.Приложение будет ждать ввода (бесконечно).Таким образом, код выглядит так, как будто он застопорился.
ИМХО
Вы не должны пытаться интерпретировать то, что произошло позади вас в предыдущих частях кода.Это соединит ваш код с другим входом, который вы можете не контролировать.Ваш ввод должен читать все, что нужно, и не более.
Например: если вы просите пользователя ввести символ, нажмите Enter.Вы должны удалить символ, а затем войти из потока ввода.Вы не должны ожидать, что следующий пользователь потока уберет за вас (или компенсирует ваш код).
printf("Enter (Y/N)\n");
scanf("%c", &character);
scanf("%*[^\n]"); // Ignore everything to the end of line.
// Assuming you have told the user you will ignore
// extraneous characters. The next input should now
// expect only what they need.