fcottf 0 Denunciar post Postado Junho 22, 2008 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 Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Junho 23, 2008 olha aki no mew compilador a saida foi: belezoca 5 3 Qtd 5 | K : 6 belezoca2 Qtd 5 | K :6 e a unica coisa q fiz pra rodar aki foi declarar as variaveis todas antes(isso pq no TC da erro c você declara depois =//), fico assim: FILE *fp, *fpp, *fppp, *tp; /*Atribui valores à struct*/ pag B, P;hááá e coloca int main, e um return 0 ae!bom c você ainda observar o erro reporta aki! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites