Вы не должны использовать feof () для включения - вместо этого используйте возвращаемое значение цикла fread () - пока он не вернет ноль.Это легко увидеть, если вы рассматриваете чтение пустого файла - feof () возвращает состояние EOF ПОСЛЕ операции чтения, поэтому он всегда будет пытаться читать поддельные данные, если используется в качестве элемента управления циклом.
Я неНе знаю, почему так много людей думают, что feof () (и член eof () потоков C ++) могут предсказать, будет ли следующая операция чтения успешной, но, поверьте, они не могут.