Bom dia.
Estou tentando fazer uma leitura de structs que eu inseri em um arquivo binário, mas está dando erro na hora da leitura.
Segue o código da função de leitura:
void lerRegistros(char* file_name)
{
ifstream entrada;
entrada.open(file_name, ios::binary);
if ( entrada )
{
entrada.seekg(0, entrada.end);
int tam = entrada.tellg();
entrada.seekg(0, entrada.beg);
int numero_registros = tam / sizeof(registro);
registro* vetor_registros = new registro[numero_registros];
for (int i = 0; i < numero_registros; i++)
{
entrada.read((char*)(&vetor_registros[i]), sizeof(registro));
}
entrada.close();
for ( int i = 0; i < numero_registros; ++i )
{
cout << "Nome da banda: " << vetor_registros[i].nome << endl;
cout << "Numero de integrantes: " << vetor_registros[i].numero_integrantes << endl;
cout << "Estilo: " << vetor_registros[i].estilo << endl;
cout << "Ano de criacao: " << vetor_registros[i].ano_criacao << endl;
cout << "Melhor hit: " << vetor_registros[i].musica_famosa << endl;
cout << endl;
}
vetor_registros = NULL;
delete[] vetor_registros;
}
else
{
cout << "Erro na leitura do arquivo!";
}
return;
}
No programa, eu peço o nome do arquivo para ler os registros e passo esse nome para a função de leitura. O mais estranho é que se eu rodar o programa sem fechar ele, a leitura é feita normalmente após cada inserção de um novo registro. Mas se eu fechar o programa e abrir ele de novo, e tentar ler do mesmo arquivo que já foi criado aí dá erro na leitura e o programa fecha na hora. Se alguém souber o que pode ser, eu agradeço.