Ошибка при считывания из файла
столкнулся с такой проблемой при выводе данных из файла данные все кроме самых первых записанных в файл выводиться некорректное.Вот код в чем моя ошибка ?Цикл вывода идет бесконечно ,но в файл пишет все корректно.
#include <iostream>
#include <fstream>
#include <cstring>
#include <conio.h>
#include <windows.h>
#include <iomanip>
using namespace std;
struct Schoolboy
{
string f;
string i;
string o;
int Class;
int PhoneNumber;
int GradeMaths;
int GradePhysics;
int GradeRussianLanguage;
int GradeLiterature;
};
ofstream file;
int main()
{
int size = 0;
fstream file("Schoolboy.txt", ios::out);
cout << "Enter size:";
cin >> size;
Schoolboy* Array = new Schoolboy[size];
for (int i = 0; i < size; i++)
{
cout << "Enter F: ";
cin >> Array[i].f;
cout << "Enter I: ";
cin >> Array[i].i;
cout << "Enter O: ";
cin >> Array[i].o;
cout << "Enter Class: ";
cin >> Array[i].Class;
cout << "Enter Phone Number: ";
cin >> Array[i].PhoneNumber;
cout << "Enter Grade Maths: ";
cin >> Array[i].GradeMaths;
cout << "Enter Grade Physics: ";
cin >> Array[i].GradePhysics;
cout << "Enter Grade Russian Language: ";
cin >> Array[i].GradeRussianLanguage;
cout << "Enter Grade Literature: ";
cin >> Array[i].GradeLiterature;
}
for (int i = 0; i < size; i++)
{
file << Array[i].f;
file << "\n";
file << Array[i].o;
file << "\n";
file << Array[i].i;
file << "\n";
file << Array[i].Class;
file << "\n";
file << Array[i].PhoneNumber;
file << "\n";
file << Array[i].GradeMaths;
file << "\n";
file << Array[i].GradePhysics;
file << "\n";
file << Array[i].GradeRussianLanguage;
file << "\n";
file << Array[i].GradeLiterature;
file << "\n";
}
file.close();
Schoolboy p;
file.open("Schoolboy.txt", ios::in);//îòêðûâàåì ïîòîê äëÿ ÷òåíèÿ
do
{
file >> p.f;
file >> p.i;
file >> p.o;
file >> p.Class;
file >> p.PhoneNumber;
file >> p.GradeMaths;
file >> p.GradeRussianLanguage;
file >> p.GradeLiterature;
if (file.eof())break;
cout <<" " <<p.f << " " << p.i << " " << p.o << " " << p.Class << " " << p.PhoneNumber << " " << p.GradeMaths << " " << p.GradePhysics << " " << p.GradeRussianLanguage << " " << p.GradeLiterature<<"\n";
} while (!file.eof());
file.close();
}
Ответы (1 шт):
Автор решения: Павел Ериков
→ Ссылка
Первое о чем хотел сказать, это о том что вы сначала в файл записываете o, а потом i (во 2 цикле). Я думаю вам нужно поменять местами, т.к. вы считываете в таком порядке уже в 3 цикле.
file << Array[i].i;
file << "\n";
file << Array[i].o;
И второе, ошибка заключается в том, что вы забываете считывать GradePhysics из-за это появляется не определенное значение у GradePhysics, а далее и вовсе все ломается.
file >> p.GradeMaths;
file >> p.GradePhysics;
file >> p.GradeRussianLanguage;