• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

bushin

SOS - estruturas com ficheiros binarios

3 mensagens neste tópico


Preciso urgentemente que me ajudem com esta dúvida, a ideia do programa era fazer um historico com os dados que q foram calculados!,

ESTA a mostrar lixo, e qdo volto a entrar no programa ele estoira.

#include <stdio.h>
#include <Windows.h>
#include <conio.h>

struct struct_empresa;

struct struct_empresa{

float liq_geral;
float liq_reduzida;
float liq_imediata;
};

void liquidez(void);
void le_valores(struct_empresa liquid);
void guardar_valores(struct_empresa liquid);


void  main(void){
struct_empresa x;

int opcao;

printf("(prima 1) para calcular a liquidez\n\n");

printf("(prima 2)mostrar dados anteriores\n");




do{
	printf("(Escolha a opcao) ");
	opcao=getch();
	switch (opcao){
		case '1':
			system("cls");
			liquidez();
			break;

		case'2':
			system("cls");
			le_valores(x);
			break;
		default:
			printf( "Op%c%co inv%clida!!! ",135,132,160);getch();	
			printf( "                           ");
			break;
	}
} while (opcao!='27');
}



void liquidez(){
float prim;
float seg;
float liq_g;
float liq_r;
float liq_i;
struct_empresa liquid;

printf("introduza o primeiro numero: \n");
scanf("%.2f",&prim);
fflush(stdin);
printf("introduza o segundo numero: \n");
scanf("%.2f",&seg);
//liquidez geral
liq_g=prim + seg;
liquid.liq_geral=liq_g;

printf("liquidez geral: %.2f\n",liquid.liq_geral);

//liquidez reduzida
liq_r=prim*2+seg;
liquid.liq_reduzida=liq_r;
printf("liquidez reduzida: %.2f\n",liquid.liq_reduzida);

//liquidez imediata
liq_i=prim+seg*2;
liquid.liq_imediata=liq_i;
printf("liquidez imediata: %.2f\n",liquid.liq_imediata);

guardar_valores(liquid);

}


void guardar_valores(struct_empresa liquid){

FILE *Liq;

Liq=fopen("experiencia.dat","wb");
fwrite(&liquid,sizeof(struct struct_empresa),1,Liq);
fclose(Liq);

}


void le_valores(struct_empresa p){

FILE *Liq;

if((Liq=fopen("liquidez.dat","rb"))==NULL)
	printf("Erro\n");

fread(&p,sizeof(struct struct_empresa),1,Liq);

printf("liquidez geral\n",p.liq_geral);
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estás a escrever para um ficheiro e a ler doutro. Não sei se é isso que pretendes, mas pode ser fonte de problemas.

Está a mostrar lixo em que situação? Em que parte do código? E estoira onde?

E outra coisa: postaste isto em C, mas tens os dados declarados como C++.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Convidado
Este tópico está fechado a novas respostas.