Depois de gravar um ficheiro de estruturas, quando tento aceder a esse mesmo ficheiro, toda a informação que tinha sido gravada não existe. Eu estou a usar o compilador codeblocks e quando compilo o programa não me dá erros nem warnings só que quando acedo a um ficheiro gravado não tenho nada gravado. Já revi o código varias vezes e modifiquei o fread e o fwrite mas nada melhorou.
As partes do codigo são as seguintes
Estruturas utilizadas
typedef struct movel{char designacao[25],marca[25];float potencia,hsimples,hvazio,hfvazio;int quantidade; }ELETRO;
struct home{char nome[25]; int tam;ELETRO *domestico;};
typedef struct home DIVISAO;
Gravar ficheiro
DIVISAO* gravar_ficheiro(char *op,DIVISAO *zona, int *n, int *v,int *k, int *s, char *b,char *nome_fich)
{
FILE *ficheiro; int z, i;
printf("\t\t\t ***** Gravar ficheiro *****\nQual o nome do ficheiro?");
maiusculas_pesquisa(zona,v,k,s,b);
strcpy(nome_fich,b);
if((ficheiro=fopen(nome_fich,"wb"))==NULL)
printf("\nNao foi possivel abrir ficheiro");
fwrite(n,sizeof(int),*n,ficheiro);
fwrite(zona,sizeof(DIVISAO),*n,ficheiro);
for(i=0;i<*n;i++)
{
fwrite(&zona[i].tam,sizeof(int),zona[i].tam,ficheiro);
fwrite(zona[i].domestico,sizeof(ELETRO),zona[i].tam,ficheiro);
}
z=fclose(ficheiro);
if(z!=0)
puts("\nProblemas na gravação do ficheiro");
getch();
}
return zona;
}
Abrir ficheiro
DIVISAO * abrir_ficheiro( DIVISAO *zona, int *n, int *v, int *k, int *s, char *b, char *nome_fich)
{
FILE *ficheiro; int z, i;
printf("\t\t\t ***** Abrir ficheiro *****\nQual o nome do ficheiro?");
maiusculas_pesquisa(zona,v,k,s,b);
strcpy(nome_fich,b);
if((ficheiro=fopen(nome_fich,"rb"))==NULL)
{
puts("\nImpossivel abrir o ficheiro");
getch();
}
else
{
fread(n,sizeof(int),*n,ficheiro);
fread(zona,sizeof(DIVISAO),*n,ficheiro);
for(i=0;i<*n;i++)
{
fread(&zona[i].tam,sizeof(int),zona[i].tam,ficheiro);
fread(zona[i].domestico,sizeof(ELETRO),zona[i].tam,ficheiro);
}
z=fclose(ficheiro);
if(z!=0)
puts("\nProblemas na fecho do ficheiro");
getch();
return zona;
}
}
Question
lomba
Depois de gravar um ficheiro de estruturas, quando tento aceder a esse mesmo ficheiro, toda a informação que tinha sido gravada não existe. Eu estou a usar o compilador codeblocks e quando compilo o programa não me dá erros nem warnings só que quando acedo a um ficheiro gravado não tenho nada gravado. Já revi o código varias vezes e modifiquei o fread e o fwrite mas nada melhorou.
As partes do codigo são as seguintes
Estruturas utilizadas
Gravar ficheiro Abrir ficheiroLink to comment
Share on other sites
0 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.