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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
#1

Как нормально идентифицировать конец файла? - C++

28.12.2012, 17:06. Просмотров 633. Ответов 1
Метки нет (Все метки)

Люди, объясните, пожалуйста, почему, если считывать файл побайтово через fin.get() в цикле типа
C++
1
2
3
4
5
6
7
std::ifstream fin("input.txt");
 
while(!fin.eof())
{
    char curChar = fin.get();
    // ...............
}
То происходит одна лишняя итерация?
Причем последняя итерация идет с символом с кодом -1. Как избежать этой итерации кроме как проверкой кода символа?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2012, 17:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как нормально идентифицировать конец файла? (C++):

Как определить конец файла? - C++
В файле лежит одно число, которое нужно проверить на делимость на 11. Число большое-до 10^10000. Попробовал сделать так: #include...

Как узнать конец файла - C++
Здравствуйте, есть такая проблема есть файл, есть строка которая последовательно берет все слова из файла, а когда она достигает конца...

Как определить конец текстового файла? - C++
Собственно весь вопрос в заголовке. Пробовал с eof, но не получается. #include <fstream.h> #include <iostream.h> #include...

Как записывать данные в конец файла - C++
Вот код: #include "stdafx.h" #include <fstream> #include <string> #include <iostream> #include <iomanip> using namespace std; ...

Как записывать данные в конец файла. - C++
Как с помощью ofstream или fstream записывать данные в конец файла, а не заново? вот мой текущий код. #include "stdafx.h" #include...

Как проверить конец файла в CFile - C++
Привет всем! Как в классе CFile или CStdioFile проверить конец файла?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ZaMaZaN4iK
Мой лучший друг-отладчик!
164 / 164 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
28.12.2012, 17:12 #2
попотому что проверка eof проверяет ПОСЛЕДНИЙ ввод, а не следующий.В данном примере при первой итерации цикла происходит проверка ввода, но так как ввода не было, то оно просто проверяет что-то, и всё нужно юзать так:
C++
1
2
3
4
5
6
7
std::ifstream fin("input.txt");
char curChar = fin.get(); 
while(!fin.eof())
{
    // ...............
    char curChar = fin.get();
}
вот так заработает
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2012, 17:12
Привет! Вот еще темы с ответами:

Как корректно обработать конец файла? - C++
  Исходная задача: реализовать шифр Цезаря.   Столкнулся с проблемой. Когда указатель в файле доходит до последнего символа в файле...

Как определить конец файла при его считывании - C++
Вот код программы, который должен выводить символы из файле input.txt в output но она выводит их бесконечно, читал я в википедии ...

Как прочесть несколько слов из файла в динамический массив char и добавить новое значение в конец? - C++
Никак не могу разобраться. Есть текстовый файл в виде: 3 Mop floor Clean windows Mow lawn цифра 3 это количесво...

Как можно записать строку в конец файла, чтобы данные которые были в нем не стерлись? - C++
Подскажит, как на С++ можно записать строку в конец файла, чтобы данные которые были в нем не стерлись?


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru