Пробелы в спецификации преобразования для scanf означают: «перепрыгивать и игнорировать пробелы во входных данных, если они есть».
«% d» в спецификации преобразования означает: «перепрыгнуть и пропустить пробелы, если они есть, затем прочитать int
»
Итак, когда вы говорите «% d», вы говорите: «перепрыгивайте через пробелы, если есть, читайте int
, перепрыгивайте через пробелы, если есть, останавливайтесь».
Когда вы вводите номер, это происходит:
input: 42<ENTER>
scanf: ^^ int
scanf: ^^^^^^^ space
И после игнорирования scanf все еще находится в режиме "игнорирования пробела". Нужно «увидеть» что-то, а не пробел, чтобы «остановиться».