2012-02-01 3 views
5

При чтении файла я понимаю, что последний символ представлен EOF. Теперь, что происходит, когда у меня есть символ EOF в этом файле?Как отличить символ EOF от фактического конца файла?

Как отличить «реальный» конец файла и символ EOF?

+0

Вы * не можете * иметь «символ EOF» в файле. Нет такой вещи –

+0

В DOS было, и все еще может быть в Windows. Ctrl-Z или ASCII 26. Одним из таких приложений, которое все еще создает файлы с символами EOF, является продукт WinQuery из аналитической группы. – STLDeveloper

ответ

10

Я решил передать свои комментарии на ответ.

У вас не может иметь «символ EOF» в вашем файле, потому что такой вещи нет. Основная файловая система знает, сколько байтов находится в файле; он не полагается на содержимое файла, чтобы знать, где находится конец.

Функции C, которые вы используете, возвращают EOF (-1) , но это не было прочитано из файла. Это то, как функция говорит вам, что вы достигли конца. И поскольку -1 не является допустимым символом в любом наборе символов, нет путаницы.

1

Предполагая, что вы говорите о C, EOF имеет значение -1, что не является символом (следовательно, нет путаницы).

+0

Итак, когда я помещаю символ 'EOF' в файл, он не будет регистрироваться как конец файла? – polemon

+2

«char» является байтом (8-битное значение), тогда как EOF является целым числом. Нет такой вещи, как символ EOF, и поэтому вы не можете поместить ее в файл. – jdigital

4

Вам нужен контекст для этого вопроса. В Windows есть устаревшая концепция DOS реального символа EOF - Ctrl-Z. На самом деле невозможно сказать «реальный» из «поддельного»; файл со встроенным Ctrl-Z будет содержать некоторые скрытые скрытые данные с точки зрения программы, которая фактически ищет Ctrl-Z как конец символа файла. Не пытайтесь писать этот код больше - это не обязательно.

В портативном C API и UNIX 32-разрядный -1 используется для обозначения конца файла, который не может быть допустимым 8 или 16-битным символом, поэтому легко сказать разницу.

+0

Erm, ок, похоже, я смутил 'EOF' и' EOT', что, по-моему, было в основном тем же. Ctrl + D часто называют «конец файла». – polemon

 Смежные вопросы

  • Нет связанных вопросов^_^