В ответ на первоначальный вопрос, когда C был молодым, использование вызовов проверки ошибок было популярным стилем программирования, но вскоре он вышел из моды.То, что происходит, это мелочи, которые не очень неправильны, но, тем не менее, почти всегда просто немного уступают, существуют какое-то время, пока они не будут названы и помечены сообществом как плохие.Этот код имеет несчастье быть написанным до того, как этот маленький анти-паттерн широко обсуждался.
В ответ на решение Cash Cow я думаю, что есть ошибка.Если вы ожидаете ввода-вывода и у вас достаточно символов для частичного заполнения буфера, функция вернется и цикл while завершится до того, как файл будет полностью прочитан.Таким образом, его решение, вероятно, будет работать правильно, если написано поверх простого необработанного ввода-вывода, но не сможет работать поверх буферизованного ввода-вывода.
Конечно, правильным решением будет завершить цикл while, когда установлен флаг EOF,В настоящий момент я не уверен, что лучший ответ, когда установлен badbit, но вам, вероятно, следует также разобраться с этим случаем.
Я бы согласился, что readsome - достойная альтернатива чтению.
Редактировать: иногда readsome недоступен (некоторые версии VC ++).В этом случае чтение не является непригодным.