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

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

Войти
Регистрация
Восстановить пароль
 
youmustknowme
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 15
#1

специфичная проверка на конец файла - C++

11.05.2013, 21:33. Просмотров 471. Ответов 3
Метки нет (Все метки)

Дело в чем. Я считываю с файла 2 размерности , 2 матрицы и вектор. Потом надо провести проверку прочитан ли файл до конца( для того чтобы размерности не были меньше матриц). Вполне логичная проверка
C++
1
if (!fin.eof()) {//блабла}
работает не совсем корректно. Если после самого последнего элемента поставить пробел, то он отлавливает этот пробел. А ведь это не ошибка, так как вектор от него не изменился. я попробовал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
fstream fin;
    fin.open("Input.txt");
int size1,size2,size3,size4;
fin>>size1;
        fin>>size2;
        fin>>size3;
        fin>>size4;
        Matrix A(size1, size2);
        Matrix B(size3, size4);
        Matrix b(size1,1);
        fin>>A;
        fin>>B;
        fin>>b;
        char ch;
        int g = 0;
while (!fin.eof()) 
{
            fin>>ch;
            if (ch!=' ') g++;}
if (g!=0) {cout<<"все очень плохо"<<endl; goto l;}
Но теперь прога не может считать этот долбаный пробел. Т.е. вылетает с ошибкой. Что не так?
заранее спасибо.
p.s. Матрицы реализованы через класс. Класс рабочий.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2013, 21:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос специфичная проверка на конец файла (C++):

Ifstream проверка на конец файла - C++
float toFloat(char array, int lenAr);// for delete dollar symbol and // convert to float int main() { char fname,...

Проверка конец файла или нет - C++
Подскажите пожалуйста если читаю числа типа int и не знаю когда конец файла как это проверять?Заранее спасибо.Если можно пример.

Удвоить размер файла, записав в конец файла все его исходные элементы - C++
Дан файл целых чисел. Удвоить его размер, записав в конец файла все его исходные элементы (в том же порядке). Помогите пожалуйста!!!!

Добавить в конец первого файла содержимое второго файла - C++
Text6. Даны два текстовых файла. Добавить в конец первого файла содержимое второго файла. Помогите пожалуйста с решением, а желательно с...

Написать программу копирования файла. В конец каждой строки файла дописать количество пробелов в строке - C++
Чтение происходит блоками. Обработать ошибки Я пока просто смогла скопировать один файл в другой, а как добавить количество пробелов...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
11.05.2013, 21:46 #2
попробуй так
C++
1
2
char ch;
while((ch = fin.get()) != EOF)
0
youmustknowme
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 15
11.05.2013, 22:13  [ТС] #3
тоже не то видимо( или я дурак. Можете поподробней?

Добавлено через 11 минут
вот такая штука проверяет следующий символ на пробел.
C++
1
2
3
4
5
    if (!fin.eof()) {
        ch2 = fin.get();
        if (ch2!=' ') g++;
    }
    if (g!=0) {cout<<"o4en' ploho"<<endl; goto l;}
т.е. видимо проблема с этим злополучным fin.eof(). если заменить первый if на while то сразу ошибка.
0
SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
11.05.2013, 22:54 #4
Чтобы получить значение EOF. Нужно прочитать (точнее попытаться прочитать) символ, следующий за последним.
В этом отличие в условиях цикла while в моём и в твоём варианте.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2013, 22:54
Привет! Вот еще темы с ответами:

конец файла - C++
Всем привет! Читаю из файла числа: ifstream in(&quot;in.txt&quot;); while(!in.eof()) {int f; in&gt;&gt;f; cout&lt;&lt;&quot;&quot;&lt;&lt;f; ...

Конец файла - C++
Почему, если я считываю текстовый файл: FILE *fp = fopen(&quot;123.txt&quot;, &quot;rb+&quot;); while(!feof(fp)) putchar(getc(fp)); ...

C++ конец файла - C++
Имеется файл с данными типа forestry и функция которая выводит на экран его содержимое void output_all (void) { forestry temp; ...

Добавить в конец первого текстового файла содержимое второго текстового файла - C++
Даны два текстовых файла. Добавить в конец первого файла содержимое второго файла.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.05.2013, 22:54
Ответ Создать тему
Опции темы

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