Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

freeman

gravar struct em ficheiro bin

Mensagens Recomendadas

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.