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

pedro_nuno

Listas ligadas e ficheiro

Recommended Posts

pedro_nuno

Boa tarde!

Eu preciso de fazer um programa que me abra um ficheiro e carregue os dados para uma lista ligada.

Já estive a estudar listas ligadas, e percebi que para além das variáveis que possa conter, a struct tem ainda de ter um apontador para a struct seguinte.

Aquilo que eu não sei fazer é:

-> determinar quantas structs vou precisar (sem andar a contar as linhas do ficheiro :P )

->passar os dados do file para cada struct

Vou dar um pequeno exemplo:

Digamos que a primeira linha do meu file é a seguinte: 0047 0047 HAITONG BANK, SA Bancos

Eu tenho de pegar naquele 0047 (também não sei pegar apenas naquele bocado de informação) e guardar numa struct (ou seja, num elemento da minha lista) e apontar para a struct seguinte onde vou guardar outros 4 números e assim sucessivamente.

Alguém sabe como posso fazer isto?

Muito obrigado

Share this post


Link to post
Share on other sites
GRSa

Bem, isso pode ser feito de várias formas. Eu faria com a seguinte estrutura:

int main()
{
typedef struct caractere Caractere;
typedef struct linha Linha;

//Estrutura que armazena os caracteres de uma linha em forma de lista ligada.O ultimo caractere deve apontar para NULL
struct caractere
{
	char caractere;
	Caractere *proximo_caractere;
};

//Estrutura que armazena as linhas do arquivo em forma de lista ligada. O última linha deve apontar para NULL.
struct linha
{
	Caractere caracteres;
	Linha *proxima_linha;
};

Linha linhas_arquivo; //A referência para a estrutura que armazena o arquivo fica nesta variável
return 0;
}

Edited by GRSa

Share this post


Link to post
Share on other sites
HappyHippyHippo

-> determinar quantas structs vou precisar (sem andar a contar as linhas do ficheiro :P )

estamos a falar de listas ligadas, logo esta questão é completamente irrelevante

->passar os dados do file para cada struct

les uma linha do ficheiro e de seguida interpretas a linha como bem entenderes

#define BUFFER_SIZE 1024 // por exemplo

FILE* fd;
char buffer[bUFFER_SIZE];

// ...

while (fgets(buffer, BUFFER_SIZE, fd)) {
 sscanf(buffer, my_format, &my_struct.param1, &my_struct.param2, &my_struct.param3);
}


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.