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

Файлы, ошибка конца файла - C++

Восстановить пароль Регистрация
 
DipPenguin
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 11
02.04.2014, 14:28     Файлы, ошибка конца файла #1
Задание : Даны символьные файлы f и g. Записать в файл h все начальные совпадающие компонентов файлов f и g .
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# include <iostream>
# include <fstream>
 
using namespace std;
 
main()
{
    ifstream f,g ;
    ofstream h;
    f.open("f.txt");
    g.open("g.txt");
    h.open("h.txt");
     char f1,f2;
     int c=0; //количество символов
    while(!f.eof())
    {
       f>>f1;cout<<"f "<<f1<<" ";
       g>>f2;cout<<"g "<<f2<<endl;
       if(f1==f2)
         {
             c++;
             h<<f1<<" ";
         }
       else
            break;
    }
    cout<<c;
    cout<<"File sozdan ...";
}
файл f.txt значения "1 2 3 4 5 6" , в файле g.txt "1 2 3 4 5 6" . выводит в файл h.txt "1 2 3 4 5 6 6"
Почему после прочтения 6 из файла f метод f.eof() в цикле while не срабатывает и начинает еще раз считывать шестерку ?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,164
Завершенные тесты: 1
02.04.2014, 15:17     Файлы, ошибка конца файла #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вы же сначала читаете из файла,
потом выполняете некоторые операторы
и только потом проверяется на конец файла.
Вариант - перенести чтение в конец:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
f>>f1;cout<<"f "<<f1<<" ";
g>>f2;cout<<"g "<<f2<<endl;
while(!f.eof())
{
      if(f1==f2)
      {
             c++;
             h<<f1<<" ";
      }
      else
            break;
      f>>f1;cout<<"f "<<f1<<" ";
      g>>f2;cout<<"g "<<f2<<endl;
}
DipPenguin
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 11
02.04.2014, 15:21  [ТС]     Файлы, ошибка конца файла #3
Спасибо)
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.04.2014, 00:50     Файлы, ошибка конца файла #4
А лучше так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
    while((f >> f1) && (g >> f2))
    {
       cout << "f " << f1 << " ";
       cout << "g "<< f2 << endl;
       if(f1 == f2)
         {
             c++;
             h << f1 << " ";
         }
       else
            break;
    }
Yandex
Объявления
03.04.2014, 00:50     Файлы, ошибка конца файла
Ответ Создать тему
Опции темы

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