Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
freeman

gravar struct em ficheiro bin

Recommended Posts

freeman

Bom dia,

Estou a fazer a um trabalho para a faculdade e estou com algumas duvidas como gravar estruturas em ficheiros!

A estrutura que eu estou a fazer é resumidamente parecida com esta:

typedef struct {
  char nome[30];
  char morada[bUFFER];
}pessoa;

O programa tem uma função para ler registos e outra para imprimir registos, que já estão a funcionar, mas como não está a gravar ou imprimir o ficheiro só mostra a ultima introdução.

Alguém que me possa dizer se isto está correcto e que me possa dar uma ajuda como imprimir o ficheiro???

FILE *fp;
ler_registo(&v1);
if((fp = fopen("DADOS.DAT","a"))==NULL)
    { printf("Impossivel Criar o ficheiro %s\n","DADOS.DAT");
      exit(1);
    }
      if (fwrite(&v1,sizeof(v1),1,fp)!=1)
    fprintf(stderr, "Falhou a escrita do registo!!!\n");
     fclose(fp);

obrigado

Share this post


Link to post
Share on other sites
Localhost

v1 é uma instância da estrutura do tipo pessoa? Mostra a leitura que fazes do ficheiro.

A fazer a leitura do ficheiro dos registos estás a abrir em que modo?

Tens um erro aí que te pode estar a causar problemas. O ficheiro que abres é do tipo binário, ou seja, tens de o abrir em modo binário. Estás a abrir com o tipo "a" de append que é para ficheiros de texto. Tens de abrir com o tipo "ab" de append binary. Se não te resolver o problema, mete aqui o que falei no inicio do meu post.


here since 2009

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.