У вас неверное ожидание. Когда scanf()
встречает конец ввода перед тем, как сопоставить элемент ввода или распознать сбой сопоставления, он возвращает EOF
. Ни при каких обстоятельствах он не изменяет значение базы данных, связанной с элементом ввода, который не был сопоставлен.
Вы игнорируете возвращаемое значение scanf
, что обычно опасно, и вместо этого проверяете, записывает ли scanf
запись EOF
в объекте, связанном с элементом ввода, что в вашем конкретном случае оно не должно когда-либо делать.