Есть две основные причины.@Etienne указал на одно: чтение может завершиться неудачей по какой-то причине, кроме достижения конца файла, и в этом случае ваша первая версия попадет в бесконечный цикл.
Однако даже без других сбоевСначала не будет работать правильно.eof()
не будет установлен до после попытка чтения не удалась, потому что достигнут конец файла.Это означает, что первый цикл выполнит одну дополнительную итерацию, которая вам не нужна.В этом случае это просто добавит дополнительную пустую (пустую) строку в конец файла.В зависимости от того, с чем вы работаете, это может иметь или не иметь значение.В зависимости от того, что вы используете для чтения данных, также довольно часто можно увидеть, как последняя строка повторяется в выводе.