Ir para conteúdo

POWERED BY:

Arquivado

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

Pablo Honey

Problema com Arquivo e Lista encadeada :(

Recommended Posts

Novamente venho aqui recorrer ajuda.

TEnho o seguinte arquivo

 

jardimfrente garagem varanda  
varanda jardimfrente sala 
sala varanda corredor 
corredor sala quarto1 quarto2 banheiro quarto3 copa 
quarto1 corredor 
quarto2 corredor 
banheiro corredor 
quarto3 corredor 
quarto4 copa 
copa corredor quarto4 cozinha  
cozinha copa area2 
area2 cozinha area1 garagem 
area1 area2 
garagem jardimfrente area2 jardimatras 
jardimatras garagem

E devo colocar na seguinte estrutura.

 

typedef struct 
{ 
	   char jardimfrente [3]; 
	   char varanda [3]; 
	   char sala [3]; 
	   char corredor [7]; 
	   char quarto1 [2]; 
	   char quarto2 [2]; 
	   char banheiro [2]; 
	   char quarto3 [2]; 
	   char quarto4 [2];
	   char copa [4];  
	   char cozinha [3]; 
	   char area2 [4]; 
	   char area1 [2];  
	   char garagem [40]; 
	   char jardimatras [2]; 
	   struct planta *proximo;
}planta;

O problema é que o arquivo não é organizado. Entao nao sei como fazer uma leitura para cada item e armazenar, sei que devo utilizar fgets, mas nao sei implementar de forma correta. Tentei de uma forma que o Kandrade tinha passadomas mas tenho certeza que esta errado.

 


{	 

	FILE *arq; 
		arq=fopen("planta.txt","r"); 
	for (i=0;i<15;i++){

	lista.item = (planta*) malloc(sizeof(planta));
	fgets(linha, 255, arq);
	  strcpy (lista.item[i].jardimfrente, linha); 
		fgets(linha, 255, arq);
		strcpy (lista.item[i].varanda, linha);
		fgets(linha, 255, arq);
		strcpy (lista.item[i].sala, linha);

 

Qual funcionalidade desse codigo:

 

http://img213.imageshack.us/my.php?image=plantaal2.jpg

 

Eu tenho uma planta de uma casa, e preciso jogar os dados de onde sai cada comodo para um arquivo. Por exemplo Estou no jardim da frente saio na garagem ou varanda. Ai o arquivo fica...

 

jardimfrente garagem varanda.

 

Eu preciso jogar todas as informações num arquivo para depois jogar numa lista encadeada onde, tera a seguinte funcionalidade, colocar o numero do comodo inicial e colocar o comodo final... ai ele irá falar os possiveis caminhos para chegar no destino. O problema é que o arquivo não fica organizado, já que comodos terá menos possibilidades do que outros por exemplo o banheiro só sai no corredor. Ai eu pensei... preciso jogar esses dados de forma separada e organizada onde quando eu chamar garagem, ele mim possa dizer aonde saio.

Se alguem puder mim passar ideias para resolver essa questão desde já agradeço. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

como esta desorganizado o txt você pode usar o "getc(fp)";

ai qnd

var[i++] = getc(fp);
while(!feof(fp)){
	while(var[i] != " ") var[i++] = getc(fp);
//for igual a branco você para de ler!

 

tenta ae!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce tem outro problema nesse código.

Voce não conseguirá armazenar 3 strings em 3 caracteres. Veja:

 

// declaracao
..
char jardimfrente [3];
..

// armazena na variavel
strcpy (lista.item[i].jardimfrente, linha);

Voce está lendo n caracteres e armazenando somente 3.

Se voce quiser separar as palavrar dentro da variável precisará de algo como isso:

 

jardimfrente [3][50];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigos obrigado pelas dicas... estarei trabalhando no codigo e assim que for aparecendo duvidas que não serão poucas rsrsrsr eu vou postando e vou pedindo a orientação de vcs. Obrigado http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

E não fecham o tópico não http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal qual o procedimento para fazer isso.

 

jardimfrente ->garagem->varanda

|

!

varanda->jardimfrente->sala

|

!

 

Ou seja como eu faço para liga o elemento jardimfrente com o proximo elemento que e' varanda e ao mesmo tempo, meu jardimfrente continuar ligado com o jardimfrente e sala.

Trocando em miudos, como posso ligar um bloco de uma lista encadeada duas vezes?

Pois eu consigo criar uma lista normalmente.

 

jardimfrente, proximo elemento, garagem, proximo elemento varanda... ate' ai otimo, isso e' o basico de encadeada, mas eu preciso ligar o jardim da frente agora com a varanda e fazer a mesma coisa que fiz acima. Eu nao sei montar essa estrutura, eu to pirando o cabeçao.

 

Por favor galera se puderem mim ajuda desde ja' agradeço... linguagem C e' terrivel e ponteiro e' o pior de tudo :blink:

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.