Ir para o conteúdo
hornet900

gravar ficheiros binarios

Mensagens Recomendadas

hornet900    0
hornet900

Boa noite.

Quero fazer um programa simples, em que o principal objetivo é estudar ficheiros.

Tenho o seguinte código:

#include <stdio.h>
#include <stdlib.h>

typedef struct{
   char nome[50];
   int numero;
}t_aluno;

int main(){
   FILE *fich;
   t_aluno aluno={"Eu",10};

   fich=fopen("exemplo.dat","wb");
   if(fich!=NULL){
   fwrite(aluno.nome,sizeof(char),1,fich);
   fwrite(&aluno.numero,sizeof(int),1,fich);
   fclose(fich);
   }
   else
   printf("\nErro ao abrir ficheiro");
   printf("%s\n",aluno.nome);
   printf("%d\n",aluno.numero);
   printf("Qual o seu nome?\n");
   scanf(" %s",aluno.nome);
   printf("Qual o seu numero?\n");
   scanf(" %d",&aluno.numero);
   fich=fopen("exemplo.dat","rb");
   if(fich!=NULL){
   fread(aluno.nome,sizeof(char),1,fich);
   fread(&aluno.numero,sizeof(int),1,fich);
   fclose(fich);
   }
   else
   printf("\nErro ao fechar ficheiro");
    return 0;
}

Não me dá erro nenhum a compilar, mas não me faz o que eu quero. Alguém me pode ajudar a dizer o que está mal?

Obrigado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
KTachyon    272
KTachyon

O que não faz em concreto? Ou melhor, o que é que queres que o programa faça? Que escreva a informação que estás a inserir depois de leres o ficheiro? Se reparares, não estás a fazer isso. Para além disso só estás a escrever 1 char do nome do aluno.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
hornet900    0
hornet900

sim, eu quero que o programa me escreva a informação depois de ler o ficheiro. Eu sei que não está a fazer isso, mas o que está mal?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
KTachyon    272
KTachyon

Para além do número de caracteres que estás a escrever para o ficheiro, nada está mal. E programa está a fazer exactamente o que está no código. Escreve o aluno da struct no ficheiro, pede os dados ao utilizador e depois lê do ficheiro para a struct (sem os imprimir).

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
hornet900    0
hornet900

  Eu pretendo gravar os dados que o utilizador introduz e, quando abro novamente o programa, pretendo que os dois primeiros printf me indiquem os dados que foram introduzidos pelo utilizador anteriormente, e o programa não me está a fazer isso. Mesmo estando os dados da estrutura inicializados com "Eu", e "10", os dois primeiros printf deviam de me informar os dados que o utilizador introduziu anteriormente, depois de ler o ficheiro, correto? E é isso que o programa não me está a fazer, porque devo ter alguma coisa mal. Já alterei o tamanho de carateres que estou a escrever no ficheiro, mas continuo com o mesmo problema.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg
Já alterei o tamanho de carateres

LOL, mete os caracteres com 1 metro de altura :)

A ordem das tuas instrucoes é:

1) inicializar aluno

2) escrever ficheiro novo

3) mostrar dados actuais

4) pedir dados ao utilizador

5) ler dados do ficheiro

Eu sugiro que reordenes para

1) inicializar aluno

2) ler dados do ficheiro

3) mostrar dados actuais

4) pedir dados ao utilizador

5) escrever ficheiro novo

Se separares estas funcionalidades em funcoes separadas tornas o teu codigo mais facil de gerir.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
hornet900    0
hornet900

  Ok, eu queria dizer que já alterei o numero de carateres que estou a escrever para o ficheiro e não o tamanho.

Agora já funciona, foi só trocar o que sugeriste, pois estava a fazer ao contrario.

Obrigado a todos.

Partilhar esta mensagem


Link 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