Ficheiros Binários em C

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:
*npessoas=fread(nome,sizeof(inter_t),MAXNOME,fp);
*nlugares=fread(lugar,sizeof(user_t),MAXLUGAR,fp);


fwrite(nome,sizeof(inter_t),npessoas,fp);
fwrite(lugar,sizeof(user_t),nlugares,fp);


por favor ajudem-me....


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
 
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.
 
Back
Topo