Ir para conteúdo
Fórum Script Brasil
  • 0

Leitura de arquivo binário


MuriloTx

Pergunta

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

  • 0

Tem um comando delete q não está correto. Seria essa a forma de fazer isso:

delete vetor_registros;

Outro ponto. Na função void lerRegistros(char* file_name) mude para isso:

 

void lerRegistros(const char* file_name)

Se resolveu poste o resultado, ok?

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...