Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá. Preciso atualizar o arquivo onde salvo as informações, ma ele atualiza errado, nao volta o parametro que quero.
O que estaria errado no código?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct pagina{
int qtd;
int k;
}pag;
FILE *LoadLeTree()
{
FILE *fp1;
fp1 = fopen("Arvore.dat","rb");
if (fp1 == NULL)
{
printf("Erro! Nome do arquivo esta incorreto\n");
exit(1);
}
return fp1;
}
FILE *LoadEscreve()
{
FILE *fp2;
fp2 = fopen("Arvore.dat","ab+");
if (fp2 == NULL)
{
printf("Erro! Nome do arquivo esta incorreto\n");
exit(1);
}
return fp2;
}
main()
{
/Atribui valores à struct/
pag B;
B.qtd = 5;
B.k = 3;
/*Salva no arquivo*/
FILE *fp = LoadEscreve();
if (fwrite(&B,sizeof(fp),1,fp))
printf("belezoca %d %d\n",B.qtd,B.k);
fclose(fp);
/*Le do arquivo*/
FILE *fpp = LoadLeTree();
pag P;
fread(&P,sizeof(pag),1,fpp);
printf("Qtd %d | K : %d\n",P.qtd,P.k);
P.qtd++;
fclose(fpp);
/*Atualiza o Arquivo*/
FILE *fppp = LoadEscreve();
if (fwrite(&P,sizeof(fp),1,fppp))
printf("belezoca2\n");
fclose(fppp);
/*Le o arquivo*/
FILE *tp = LoadLeTree();
fread(&P,sizeof(pag),1,tp);
printf("Qtd %d | K : %d\n",P.qtd,P.k);
fclose(tp);
}
Após compilar, o programa retorna isto:
belezoca 5 3
Qtd 5 | K : -1076465848
belezoca2
Qtd 5 | K : 6
Carregando comentários...