Ir para conteúdo

POWERED BY:

Arquivado

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

Abruzi

ficheiros c

Recommended Posts

Boas, tou a fazer um trabalho de programaçao sobre um simulador de seguros automovel...

e tou com duvidas na parte de guardar os dados em fixeiros....

a minha duvida e na parte da leitura....

pois posso gravar dados pedidos ao utilizador ate num maximo de 50 simulacoes...

a minha duvida é, kuando quero aceder ao fixeiro.. por exemplo tenho duas linhas com os dados do condutor... a 1 para um e a segunda para outro...

no caso de keres visualizar os dados referentes ao segunto como fazer????

e no caso de querer visualizar para o 5 tendo mais 10 inceridos...???

isto gravados em fixeiros txt....

aguardo resposta.....

obrigado pela atenção....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa!

Vamos com calma amigão!!!

 

Não entendi nada.

Poste onde está seu problema.

Poste o pedaço do código que esta com dificuldade.

Poste um exemplo de input/output para podermos analisar melhor o problema.

Noo tópico "Leia antes de Postar" ( http://forum.imasters.com.br/index.php?showtopic=294106 ) vais encontrar mais algumas dicas para teres as suas duvidas solucionadas mais rapidamente!

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho uma funcao para gravar no fixeiro estes dados......

 

void grava_dados(int cont){
	FILE *fp;
	if(gravar==1 && cont<=50){
		fp=fopen("CONDUTORES","a");
		if((!fp) ){
		printf("Impossível ler do ficheiro\n Função terminada!");
		exit(1);
			}
// gravar estes dados no fixeiro!!!! 
		fprintf(fp,"%d  ",cont);
		fprintf(fp,"Nome: %s\t",pessoa.nome);
		fprintf(fp,"Morada: %s   %d-%d",pessoa.morada,pessoa.cp1,pessoa.cp2);
		fprintf(fp,"Data Nascimento: %d-%d-%d",pessoa.data_nasc.dia,pessoa.data_nasc.mes,pessoa.data_nasc.ano);
		fprintf(fp,"\tEstado Civil: %s",pessoa.es_civc);
		fprintf(fp,"\tSinistros Ultimos 5 Anos: %s ",pessoa.sin_5anosc);
		fprintf(fp,"\tData Emissao Carta: %d-%d-%d",pessoa.data_cond.dia,pessoa.data_cond.mes,pessoa.data_cond.ano);
		fprintf(fp,"\tDuracao do Seguro: %s",pessoa.duracaoc);
			fprintf(fp,"\tSeguro outros Ramos: %s",pessoa.outro_segc);
 		fprintf(fp,"\n");
		cont++;
		fclose(fp);
	}
}

o meu problema.....

funcao ler ficheiro.....

ler a partir do fixeiro estes dados e passar para o output!!!!!

 

ex:

dados guardados no fix

1 Nome aaaa Morada mmmmm 3333-888 data nascimento ......

2 Nome bbbb Morada mmmmmm 6464-555 data nasc ........

.

.

.

.

50 Nome kjsd .....................................................................

// o que kero mostrar ao utilizador....

quail o registo que pretende visualizar?

 

ex. 2

ecra

2 Nome bbbb Morada mmmmmm 6464-555 data nasc ........

 

espero que compriendam o que kero...

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, compreendi agora.

Mas eu agradeceria se você lesse o tópico "Leia antes de postar"... Ele não tem esse nome atoa...

 

Te aconselho a dar uma lida nisso:

http://forum.imasters.com.br/index.php?showtopic=340837

Compartilhar este post


Link para o post
Compartilhar em outros sites

depois disto...

caso ja tenha as 50 simulacoes guardadas e no caso da 51 queira guardar....

terei que apagar a primeira simulacao guardada e colocar na sim 50 a 51 e andar com as anteriores para traz....

 

ex.

1 nome ssss morada mmmmm 7777-888 .....

 

..

..

..

50 Nome bbbb Morada mmmmmm 6464-555 data nasc ........

1 passa a ser a segunda

.

.

.

49 Nome bbbb Morada mmmmmm 6464-555 data nasc ........

50 os novos dados....

Compartilhar este post


Link para o post
Compartilhar em outros sites

void grava_dados(){

FILE *fp,*fp2;

if(gravar==1 && cont<=50){

fp=fopen("CONDUTORES","a");

fp2=fopen("VEICULOS","a");

if((!fp) && (!fp2)){

printf("Impossível ler do ficheiro\n Função terminada!");

exit(1);

}

fprintf(fp,"%d ",&cont);

fprintf(fp,"Nome: %s\t",pessoa.nome);

fprintf(fp,"Morada: %s %d-%d",pessoa.morada,pessoa.cp1,pessoa.cp2);

fprintf(fp,"Data Nascimento: %d-%d-%d",pessoa.data_nasc.dia,pessoa.data_nasc.mes,pessoa.data_nasc.ano);

fprintf(fp,"\tEstado Civil: %s",pessoa.es_civc);

fprintf(fp,"\tSinistros Ultimos 5 Anos: %s ",pessoa.sin_5anosc);

fprintf(fp,"\tData Emissao Carta: %d-%d-%d",pessoa.data_cond.dia,pessoa.data_cond.mes,pessoa.data_cond.ano);

fprintf(fp,"\tDuracao do Seguro: %s",pessoa.duracaoc);

fprintf(fp,"\tSeguro outros Ramos: %s",pessoa.outro_segc);

fprintf(fp,"\n");

//Dados Sobre Veiculo!!!!!!!

fprintf(fp2," %d ",&cont);

fprintf(fp2,"Marca: %s ",veiculo.marca);

fprintf(fp2,"\tMatricula: %s ",veiculo.matricula);

fprintf(fp2,"\tAno Construcao: %d ",veiculo.ano_const);

fprintf(fp2,"\tUso: %s",veiculo.usoc);

fprintf(fp2,"\tForma: %s ",veiculo.formac);

fprintf(fp2,"\tUtilizacao: %s ",veiculo.utilc);

fprintf(fp2,"\tCilindrada: %d",veiculo.cilind);

fprintf(fp2,"\tTransporta Mat. Perigosas: %s",veiculo.mat_perigc);

fprintf(fp2,"\tNumero de Lugares: %d",veiculo.n_lugares);

fprintf(fp2,"\tConcelho Circ. Frequente: %s",veiculo.conc);

fprintf(fp2,"\n");

cont++;

fclose(fp);

fclose(fp2);

//Ficheiros Binarios!!!!!!!!!!!!!

}

}

 

void mostra_dados_condutor (){

FILE *fp1;

char str[DIM];

fp1=fopen("Condutores","r");

if(!fp1){

printf("Impossivel Abrir Ficheiro!!!!!");

exit(1);

}

// nao tou a conseguir percorrer o fixeiro e mostrar os dados que pretendo

// isto é depois de o 1 ser guardado e quera visualizar os dados

// passar para output...

// posicionar na posicao seguinte

// caso grave 2 e querer visualizar os dados referentes a esta simulacao..

// passar para o output... assim sucessivamente....

printf("\n\t\tDados Condutor: \n\n");

printf(" %s \n ",str);

printf("\n\n");

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aconselho a dar uma estudada em Listas Encadeadas.

Você pode usar algum recurso?? como STL ou algo assim??

 

---

Use a tag [.code], ninguem vai qrer ler seu código sem identação e td jogado.

pela mor neh pra q você digitar uma linha e aperta 5x o ENTER??? faça seu post o + limpo possivel.

Não de um 'up' em seu tópico, isso vai contra as regras do fórum.

 

Próximo aviso será via MP, e você poderá ser punido.

 

Qr ajuda??? Colabore com a organização da área.

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quit, ele não deu up no tópico. A última postagem foi minha, e foi hoje mesmo. Eu pedi pra ele postar o código.

 

Ja sobre o código.

Cara, de uma estudada em estruturas, arquivos BINÁRIOS, listas encadeadas....

se não vai ficar difícil.

Não da pra contruir um prédio sem os alicerces.

 

você está gravando uma série de dados absolutamente inúteis no seu arquivo... é um arquivo de dados não um relatório!!!

por exemplo:

"Data Nascimento: 12-10-1987"

só é importante a data: 12-10-1987!

Sem contar que vai te facilitar muito na hora de ler o arquivo novamente!

 

Pense em uma estrutura de um arquivo, por exemplo:

a primeira linha conterá o nome e o endereço, separados por uma virgula.

Na segunda, a duração do seguro e a data de nascimento... etc...

Mesmo assim é trabalho absolutamente desnecessário...

 

trabalhe com arquivos binários, guarde a struct inteira no arquivo e pronto!

1 linha de código:

fwrite(&estrutura, sizeof(tipo), 1, fp);

Compartilhar este post


Link para o post
Compartilhar em outros sites

ahhh...

entendi, não olhei a lixeira, peço desculpas.

Você tem toda razão!

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.