Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fcottf

Manipulação de Arquivo - Atualizar em C

Recommended Posts

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.