Ir para o conteúdo
ruicorreia92

Alterar estruturas em ficheiros binarios

Mensagens Recomendadas

ruicorreia92

Boas malta,

Estou com uma duvida quanto à alteração de uma estrutura dentro de um ficheiro binario.

O codigo que uso é o seguinte e não percebo o porquê de rebentar logo no fread

void actualiza(char *nome_fich)
{
   struct pessoa c;
   FILE *f;

   f=*nome_fich;

   printf("insira o nome: ");
   scanf("%s",c.nome);
   // Posiciono o cursor no inicio do ficheiro
   fseek(&f,sizeof(struct pessoa),SEEK_SET);

   //começar a ler o ficheiro
   fread(&c, sizeof(struct pessoa), 1, f);


   printf("\nDigite o novo nome: ");
   scanf("%s", c.nome);
   printf("\nDigite a nova idade.: ");
   scanf("%d", &c.idade);

   if (fwrite(&c, sizeof(struct pessoa), 1, f) != 1)
   {
       printf("\nNão foi possivel actualizar...");
   }
   else
   {
       printf("Actualizado com sucesso...");
   }
}

Editado por thoga31
Tags code + GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

porque o fseek não está a colocar o ponteiro interno do stream no início (como dizes no comentário)


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ruicorreia92

porque o fseek não está a colocar o ponteiro interno do stream no início (como dizes no comentário)

Como assim ?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

acho que a frase que escrevi não deixa margem para dúvidas.

não estás a fazer o que dizes no comentário ...


IRC : sim, é algo que ainda existe >> #p@p

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.