2011-09-06 3 views
0

Будет ли эта ошибка оценивать размер файла в файловой системе? Будет ли файловая система перезаписывать все прошлое после первого символа EOF? Как это обрабатывается?Файл содержит два символа EOF; что происходит?

+0

http://stackoverflow.com/questions/ 2405818/does-eof-fact-exist кажется актуальным. –

ответ

3

В Unix нет символа EOF. Это просто концепция, значение, возвращаемое getc, чтобы сигнализировать «это конец (прекрасный друг)». EOF выбран так, чтобы getc (и его друзья) не смогли вернуть его в любом другом случае.

И о написании конца файла, разные файловые системы делают что-то по-другому.

  • Некоторые оставляют отверстия, которые на самом деле не занимают никакого места на диске
  • Некоторые заполнить пробелы с пробелами (0)
+0

Я думаю, что он говорит о символах^D (байты со значением 4) при чтении в текстовом режиме. –

+0

@ Karl Knechtel Текстовый режим - это Braindamage MS. Я думаю, что это^Z или '0x1A'. Кто-то объяснил мне, откуда он, я думаю, что это CP/M. – cnicutar

+0

Я чувствую необходимость отметить, что getc возвращает int, а не char! Многие люди, новые для getc забывают об этом или не знают этого и поэтому, войдут в бесконечный цикл. –

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