1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Ficheiros Binários em C

Discussão em 'Programação' iniciada por TNTiago, 25 de Junho de 2007. (Respostas: 3; Visualizações: 1842)

  1. TNTiago

    TNTiago Power Member

    A minha dúvida é como devo fazer para no mesmo ficheiro binário meter duas structs, tinha idealizado da seguinte maneira, mas só consigo obter a primeira struct...

    void carregar_ficheiros(inter_t nome[],int*npessoas,user_t lugar[],int*nlugares )
    {


    FILE *fp;
    fp=fopen("teste.dat","rb");
    if (fp==NULL)
    {
    printf("ERRO na abertura");
    return;
    }
    *npessoas=fread(nome,sizeof(inter_t),MAXNOME,fp);
    *nlugares=fread(lugar,sizeof(user_t),MAXLUGAR,fp);

    fclose(fp);
    }



    void guardar_ficheiros(inter_t nome[],int npessoas,user_t lugar[],int nlugares)
    {

    FILE *fp;
    fp=fopen("teste.dat","wb");
    if (fp==NULL)
    {
    printf("ERRO na abertura");
    return;
    }
    fwrite(nome,sizeof(inter_t),npessoas,fp);
    fwrite(lugar,sizeof(user_t),nlugares,fp);


    fclose(fp);
    }


    por favor ajudem-me....
     
    Última edição: 25 de Junho de 2007
  2. AragTey

    AragTey Power Member


    Boas olha n sei como inicializas MAXNOME e MAXLUGAR, mas n podes usar assim tens de garantir que na leitura les o mesmo numero de estruturas que escreveste, por ex:

    se npessoas = 5 e MAXNOME = 10....tu vais ler 10 estruturas de nome enquanto so escreveste 5 e assim naturalmente nao vais ler nada para por na estrutura lugar.

    O melhor e antes de gravar as estruturas gravar 1 int com o npessoas e outro com o n lugares.

    Cumps
     
  3. TNTiago

    TNTiago Power Member

    ok vou ver obrigado..
     
  4. Demio

    Demio Power Member

    Meu, depois do primeiro fread(), o buffer vai tar no fim do ficheiro. Tens de voltar po inicio do buffer depois desse fread(), acho que há uma função pa isso mas já nao me lembro do nome.
     

Partilhar esta Página