Ir ao conteúdo
  • Cadastre-se

C Como abrir um ficheiro binário e colocar em um vetor dinâmico de estruturas


Posts recomendados

Olá, eu preciso criar uma função que receba como parâmetro o nome do ficheiro binário e que leia ele e coloque o conteúdo dele em um vetor dinâmico de estruturas e devolve o mesmo.

Vou mandar o que eu já fiz, mas não esta funcionando (acho que ta bem errado).


 

#define MAX 100



typedef struct sala local, *plocal;
struct sala{
    int id;
    int capacidade;
    int liga[3];

}



plocal le_dados(char *ficheiro)
{
    plocal *aux;
    plocal *p;
    int *total;

    FILE* f;
    f = fopen(ficheiro, "rb");
    if(f==NULL){
        printf("\nErro na abertura do arquivo de espaco\n");
        return;
    }
    while(fread(&p, sizeof(local),1,f)== 1){
    fread(&total, sizeof(local), 1, f);
    aux = realloc(p, sizeof(local)*(*total));
    if(aux == NULL){
        printf("Erro na alocacao");
        return;
    }
    p[*total] = aux;
    (*total)++;
    }
    printf("\nLeu o arquivo");
    return p;
}



int main()
{
    int *total;
    plocal espaco= NULL;
    char ficheiro[MAX] = "E2.bin";

   
    espaco = le_dados(ficheiro);

return 0;
}

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

 

17 horas atrás, arfneto disse:

Acho que você não pensou no programa todo... Se vai ler de um arquivo qualquer pode ler bytes e mostrar o que tem lá dentro, tipo um dump em hexadecimal.

 

Se quer ler algo estruturado com algum conteúdo que faça sentido, que tal antes GRAVAR algo lá e DEPOIS ler de volta?

 

Como assim? Gravar algum conteúdo no ficheiro e depois ler de volta? Se for isso, não é o intuito, eu já tenho ficheiros organizados com estruturas do tipo local ali no código e é apenas para eu ler aquilo dos ficheiros e colocar num vetor dinâmico de estruturas.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

3 minutos atrás, João Vitor Santos Nowisck disse:

Como assim? Gravar algum conteúdo no ficheiro e depois ler de volta? Se for isso, não é o intuito, eu já tenho ficheiros organizados com estruturas do tipo local ali no código e é apenas para eu ler aquilo dos ficheiros e colocar num vetor dinâmico de estruturas

 

então você já gravou :) em outro momento. Só isso.

 

Você só não pode achar que vai ler algo que faça sentido se não sabe quem gravou lá. E é claro mais fácil você mesmo gravar na linha anterior. Mesmo porque aí você saberá o que espera ler...

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...