thinkabout Posted May 9, 2017 at 10:46 PM Report Share #604098 Posted May 9, 2017 at 10:46 PM (edited) Boas, Tenho as seguintes estruturas. Estou a tentar fazer a ligação entre as duas struct que tenho, mas estou com alguns problemas depois a ler do fscanf. O objectivo é carregar o animal de uma lista ligada e ao carregar o mesmo, dizer a que área que ele pertence campo que está noutra struct (Vector Dinâmico). Se usar a ANIMAL1 struct ANIMAL1 { int id; // id único por animal char especie[MAX]; // ID Unico char nome[MAX]; int peso; char Area[MAX]; // Trabalha OK pno prox; }; E depois usar while (fscanf(pFile, "%s %s %d %s", buffer.especie, buffer.nome, &buffer.peso, buffer.Area) == 4), trabalha sem problemas. Mas a minha intenção é usar struct ANIMAL2 { int id; // id único por animal char especie[MAX]; // ID Unico char nome[MAX]; int peso; Area * local; // Tenho problemas depois no fscanf. pno prox; }; typedef struct ANIMAL no, *pno; while (fscanf(pFile, "%s %s %d %s", buffer.especie, buffer.nome, &buffer.peso, buffer.local->idarea) == 4) O meu fscanf não gosta quando vai ler buffer.local->idarea, e não sei como o ler, agradeço ideias. struct area { char idarea[MAX]; //ID area float pesocomportado; int nrfronteiras; int nranimais; char * fronteiras[MAXAREAS]; }; typedef struct area Area, *pArea; Edited May 9, 2017 at 10:48 PM by thinkabout Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted May 9, 2017 at 11:07 PM Report Share #604099 Posted May 9, 2017 at 11:07 PM eu não percebi o que queres fazer IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
thinkabout Posted May 9, 2017 at 11:25 PM Author Report Share #604103 Posted May 9, 2017 at 11:25 PM Vou tentar explicar-me o melhor possível. Tenho uma lista com 2 animais, essa lista diz a onde esse animal está no Zoo. Leao Simba 250 AreaA Zebra Leopoldo 100 AreaB Quando leio a lista, quero guardar a localização do animal num campo que não está na lista ligada, está noutra struct (Vector). Se guardar dentro da LISTA com um campo char local[max], não tenho problemas, para esse efeito estou a usar este fscanf. while (fscanf(pFile, "%s %s %d %s", buffer.especie, buffer.nome, &buffer.peso, buffer.Area) == 4), trabalha sem problemas. Se tentar guardar dentro do Vector com usando o campo Area * local; , que defini dentro da LISTA. while (fscanf(pFile, "%s %s %d %s", buffer.especie, buffer.nome, &buffer.peso, buffer.local->idarea) == 4) o fscanf falha-me. Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted May 9, 2017 at 11:33 PM Report Share #604104 Posted May 9, 2017 at 11:33 PM diz o que te passou pela cabeca para fazer o segundo fscanf IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
thinkabout Posted May 9, 2017 at 11:49 PM Author Report Share #604108 Posted May 9, 2017 at 11:49 PM (edited) Eu quero dizer que um determinado animal pertence a uma área. Como não tenho esse campo diretamente na STRUCT animal, tenho que ir gravar essa informação noutro local (Vector - Area). E estava a tentar gravar aqui buffer.local->idarea. O que nem faz muito sentindo, pois quando carrego o animal depois também vou querer acrescentar peso e número de animais dentro daquela Area (vector). Posso recolher a informação como string como estou a fazer e depois a tratar, depois de achar o vector que quero inserir. O animal tem que ficar com a informação de onde pretende, posso querer lista todos os animais que estão na AreaA. Contudo não posso fazer isto Buffer.local->idarea = buffer.nomelocal; Confesso que o fscanf não sentido realmente mas não estou bem a ver como dar a volta a questão. Edited May 9, 2017 at 11:52 PM by thinkabout Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted May 10, 2017 at 05:03 AM Report Share #604112 Posted May 10, 2017 at 05:03 AM vamos la por partes (nem estou a ver como fazer como tu vás à fonte sem te levar ate lá). se são registos diferentes nao tens nada de ler dados para um registo diferente. sucintamente, o que tem de fazer nao e mais do que ler os dados do registo animal, sejam ele directamente para uma estrutura ou nao, somente depois fazer todo o tranalho de pesquisa e actualizacao dos dados sobre um registo existente ou nao da lista de areas. No final actualizas a tua estrutra animal de acordo com a referência ao registo área usado/manipulado no passo intermédio. IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now