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.
Pergunta
MuriloTx
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.
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.