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

не корректный вывод из файла - C++

Восстановить пароль Регистрация
 
fuzzytoozy
8 / 8 / 1
Регистрация: 23.11.2012
Сообщений: 94
05.02.2013, 05:21     не корректный вывод из файла #1
Здравствуйте! Такая проблема: запрашиваю в цикле ввод данных, введенные данные заношу в файл data.txt. Далее пытаюсь извлечь данные из файла и вывести их на экран. Последние введенные данные выводятся 2 раза, не понимаю почему. Подскажите пожалуйста.
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//---------------------------------------------------------------------------
 
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
 
//---------------------------------------------------------------------------
 
int main(int argc, char* argv[])
{
  ifstream if1;
  ofstream of1("data.txt");;
  unsigned long num;
  char ans = 'y';
  string s1,s2;
 
  while( ans == 'y' )
  {
   cout << "\nEnter employer's name: ";
   cin >> s1;
   cout << "\nEnter employer's surname: ";
   cin >> s2;
   cout << "\nEnter employer's number: ";
   cin >> num;
   of1 << s1 << ' ' << s2 << ' ' << num << ' ';
 
 
   cerr << "\nContinue?(Y/N): ";
   cin >> ans;
  }
 
  of1.close();
  if1.open("data.txt");
  while ( !if1.eof() )
  {
   if1 >> s1 >> s2 >> num ;
 
   cout << "\nEmployer's name: " << s1;
   cout << "\nEmployer's surname: " << s2;
   cout << "\nEmployer's number: " << num << endl;
  }
 
   system("PAUSE");
 
        return 0;
}
//---------------------------------------------------------------------------
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2013, 05:21     не корректный вывод из файла
Посмотрите здесь:

C++ Корректный ввод структуры и ее обработка
Корректный вывод русского алфавита C++
Корректный ввод с cin C++
Не корректный вывод данных C++
C++ Не совсем корректный вывод при сортировке
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dalay_lama
 Аватар для dalay_lama
65 / 65 / 7
Регистрация: 22.09.2012
Сообщений: 435
05.02.2013, 06:53     не корректный вывод из файла #2
Цитата Сообщение от fuzzytoozy Посмотреть сообщение
of1 << s1 << ' ' << s2 << ' ' << num << ' ';
Здесь убери последний пробел после num. У тебя цикл ввода из текстового файла в переменные проходит дважды потому как на записи num он не заканчивается, там ещё пробел остаётся, он цикл второй раз и прогоняет.
fuzzytoozy
8 / 8 / 1
Регистрация: 23.11.2012
Сообщений: 94
05.02.2013, 11:20  [ТС]     не корректный вывод из файла #3
Нет, я пробовал убирать пробел. И ничего это не меняет, записывается фаил корректно, а вот почему он 2 раза выводит последний введенный - непонятно....
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
05.02.2013, 11:48     не корректный вывод из файла #4
eof() будет true не когда текущая позиция в конце файла, а когда уже была неудачная попытка чтения, так что эту проверку надо делать после чтения.
fuzzytoozy
8 / 8 / 1
Регистрация: 23.11.2012
Сообщений: 94
05.02.2013, 14:33  [ТС]     не корректный вывод из файла #5
но ведь неудачная попытка чтения должна возникнуть в конце файла, с чего бы ей возникнуть в другой момент?

Добавлено через 50 секунд
как зациклить то вывод из файле чтобы не выводились 2 раза последние введенные данные, подскажите пжлст =)

Добавлено через 1 час 45 минут
ну помогите вырваться из лап быдлокодинга
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,334
Завершенные тесты: 1
05.02.2013, 15:35     не корректный вывод из файла #6
Цитата Сообщение от fuzzytoozy Посмотреть сообщение
ну помогите вырваться из лап быдлокодинга
Это не ко мне.
Решение вот, а чтобы вырваться курите ответ skorik-1992.
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
 
//---------------------------------------------------------------------------
 
int main(int argc, char* argv[])
{
  ifstream if1;
  ofstream of1("data.txt");;
  unsigned long num;
  char ans = 'y';
  string s1,s2;
 
  while( ans == 'y' )
  {
   of1 << ' ';
   cout << "\nEnter employer's name: ";
   cin >> s1;
   cout << "\nEnter employer's surname: ";
   cin >> s2;
   cout << "\nEnter employer's number: ";
   cin >> num;
   of1 << s1 << ' ' << s2 << ' ' << num;
 
 
   cerr << "\nContinue?(Y/N): ";
   cin >> ans;
  }
 
  of1.close();
  if1.open("data.txt");
  while ( !if1.eof() )
  {
   if1 >> s1 >> s2 >> num ;
   cout << "\nEmployer's name: " << s1;
   cout << "\nEmployer's surname: " << s2;
   cout << "\nEmployer's number: " << num << endl;
  }
 
   system("PAUSE");
 
        return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2013, 16:04     не корректный вывод из файла
Еще ссылки по теме:

Корректный код под C++ C++
C++ Создать программу, создающую корректный HTML-файл с форматированием, содержащий весь текст из файла
Не корректный вывод C++

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

Или воспользуйтесь поиском по форуму:
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
05.02.2013, 16:04     не корректный вывод из файла #7
C++
1
2
3
if1 >> s1 >> s2 >> num;
if (!ifs.good())
  break;
Yandex
Объявления
05.02.2013, 16:04     не корректный вывод из файла
Ответ Создать тему
Опции темы

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