DennisKingsman
@DennisKingsman
Студент

Как корректно вывести структуру в файл?

Суть задачи в том чтобы считывать из файла строки которые содержат в себе данные и в строке выполняется условие то выводить ее в другой файл.
Я решил поочередно считывать строку заполняя поля структуры и в случае выполнения условия выводить эти поля.
Проблема в том, что программа не работает и я даже не могу разобраться почему, так как visual studio просто сообщает о том , что возникли ошибки сборки. Как правило после такого оно подчеркивает ошибочные места или выводит исключение , но не в этом случае.
Прошу помогите отладить программу и укажите в чем ошибка, заранее спасибо.
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("E:\\inputStruct.txt");
ofstream out("E:\\outputStruct.txt");

struct List 
{
	char Mark[20], Num[10], ExName[20];
	int Year, PastRoad;
	void Show();
	void Print();
};

void List :: Show()
{
	cout << Mark[20] << '\t' << Num[10] << '\t' << ExName[20] << '\t' << Year << '\t' << PastRoad << endl;
}

void List :: Print()
{
	out << Mark[20] << '\t' << Num[10] << '\t' << ExName[20] << '\t' << Year << '\t' << PastRoad << endl;
}

List **PutInStruct(ifstream& in, ofstream& out, int pastRoad);

int main()
{
	if (!in)
	{
		cout << "Error" << endl;
		system("pause");
		return -1;
	}

	cout << "Enter required PastRoad " << endl;
	int pastRoad;
	cin >> pastRoad;

	**PutInStruct(in, out, pastRoad);

	system("pause");
	return 0;
}

List **PutInStruct(ifstream& in, ofstream& out, int pastRoad)
{
	List AutoList;

	while (in.peek() != EOF)
	{
		in >> AutoList.Mark;
		in >> AutoList.Num;
		in >> AutoList.ExName;
		in >> AutoList.Year;
		in >> AutoList.PastRoad;
		if (AutoList.PastRoad < pastRoad)
		{
			AutoList.Print();
		}
	}
}
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
myjcom
@myjcom Куратор тега C++
Конструктор List с параметрами по умолчанию не помешал бы.
И вместо char* используйте std::string

Опечатка out
void List :: Print()
{
  out << Mark[20] << '\t' << Num[10] << '\t' << ExName[20] << '\t' << Year << '\t' << PastRoad << endl;
}

И массив в цикле нужно выводить.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы