Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 15
1

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

11.05.2013, 21:33. Просмотров 870. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.05.2013, 21:33
Ответы с готовыми решениями:

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

Проверка конец файла или нет
Подскажите пожалуйста если читаю числа типа int и не знаю когда конец файла как это...

Специфичная работа со звуком
Возникла такая задача: 1. Считывать звук со звуковой карты, с разных каналов одних и тех же...

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

3
328 / 327 / 92
Регистрация: 16.12.2012
Сообщений: 544
11.05.2013, 21:46 2
попробуй так
C++
1
2
char ch;
while((ch = fin.get()) != EOF)
0
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
328 / 327 / 92
Регистрация: 16.12.2012
Сообщений: 544
11.05.2013, 22:54 4
Чтобы получить значение EOF. Нужно прочитать (точнее попытаться прочитать) символ, следующий за последним.
В этом отличие в условиях цикла while в моём и в твоём варианте.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2013, 22:54

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

Даны два текстовых файла. Добавить в конец каждой строки первого файла соответствующую строку второго файла
Нужна помощь с самим модулем,с загрузкой и сохранением файлов все в принципе понятно.

Добавить в конец файла строку, содержащую количество строк исходного файла
Дан текстовый файл. Добавить в конец файла строку, содержащую количество строк исхлдного файла,...

Как при чтении файла проверить достигнут ли конец файла?
Как при чтении файла проверить достигнут ли конец файла? Dim Red As IO.BinaryReader Red = New...


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

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

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