Форум программистов, компьютерный форум CyberForum.ru

Чтение файла, лишняя итерация - C++

Восстановить пароль Регистрация
 
iwsyhgia
1 / 1 / 0
Регистрация: 11.01.2014
Сообщений: 51
01.05.2014, 12:23     Чтение файла, лишняя итерация #1
Вопрос по функции feof(). Я так понимаю она должна сигнализировать о конце файл, если был прочитан последний байт файла. Но у меня в примере снизу это происходит только с одной лишней итерацией (когда последний байта файл считывается, цикл выполняется еще раз и только потом происходит выход из цикла). С чем это связано?
C++
1
2
3
4
5
6
7
8
9
10
void test2() {
   FILE *f;
   f = fopen("/home/iwsyhgia/workspace/1/input.txt", "rb");
   unsigned char byte;
   while (!feof(f)) {
      byte = fgetc(f);
      ...
   }
   fclose(f);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2014, 12:23     Чтение файла, лишняя итерация
Посмотрите здесь:

Итерация C++
Оптимизация. Лишняя информация в решении C++
Чтение из файла. Повторное чтение файла C++
C++ Лишняя скобка?
Чтение файла с несколькими знаками конца файла C++
Лишняя черта C++
Выводится лишняя строка из файла C++
C++ Лишняя строка в файле

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TenGen
Будущее рядом
 Аватар для TenGen
96 / 94 / 20
Регистрация: 06.03.2014
Сообщений: 342
01.05.2014, 12:36     Чтение файла, лишняя итерация #2
iwsyhgia, а что за переменная считывается
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
01.05.2014, 13:02     Чтение файла, лишняя итерация #3
iwsyhgia, потому что признак конца файла выставляется после попытки чтения за концом файла.
This indicator is generally set by a previous operation on the stream that attempted to read at or past the end-of-file.
отсюда
Т.е. проверять на eof надо ПОСЛЕ чтения (fgetc).
Yandex
Объявления
01.05.2014, 13:02     Чтение файла, лишняя итерация
Ответ Создать тему
Опции темы

Текущее время: 15:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru