Dovrei scrivere un programma in C che legga da file dei record contenenti nome, cognome, età, altezza e li memorizzi in una lista.
in pratica ho il file contenente un elenco del tipo:
maria carso 26 168
luigi rossi 34 173
daniela mulino 22 170
Fino al caricamento dal file non ho nessun problema, il problema nasce dal caricamento nella lista ed il problema credo sia nella gestione delle stringhe per il nome ed il cognome.
Ecco il codice:
codice:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
//definizione struttura record
typedef struct
{ char nome[20];
char cognome[20];
int eta;
int altezza;
} record;
//definizione lista
typedef struct EL
{record info;
struct EL *prox;
}elemlista;
typedef elemlista *listaelementi;
//procedura di stampa lista
void visualizzalista(listaelementi lista)
{ if (lista==NULL)
printf("fine!!");
else { printf("%s %s %d %d \n", lista->info.nome, lista->info.cognome, lista->info.eta, lista->info.altezza);
visualizzalista(lista->prox);
}
}
int main(int argc, char *argv[])
{
listaelementi lista;
elemlista *punt;
lista=NULL;
FILE *fl;
record elemento;
/*memorizza elenco dal file alla lista*/
if ((fl=fopen("elenco.txt", "r")) == NULL)
printf("impossibile aprire il file");
else
{
while(!feof(fl))
{ fscanf(fl, "%s %s %d %d", &elemento.nome, &elemento.cognome, &elemento.eta, &elemento.altezza);
/*solo per controllare che i dati vengano presi in modo corretto*/
printf("%s %s %d %d \n", elemento.nome, elemento.cognome, elemento.eta, elemento.altezza);
//caricamento dati nella lista
punt = malloc(sizeof(elemlista));
*punt->info.nome= *elemento.nome;
*punt->info.cognome= *elemento.cognome;
punt->info.eta= elemento.eta;
punt->info.altezza= elemento.altezza;
punt->prox = lista;
lista=punt;
}
}
//stampa lista
visualizzalista(lista);
system("PAUSE");
return 0;
}
in particolare credo che la chiave sia in queste istruzioni(piuttosto anomale come le ho scritte ma solo così non mi da errori sull'assegnazione)
codice:
*punt->info.nome= *elemento.nome;
*punt->info.cognome= *elemento.cognome;
Devo forse gestire le stringhe come array?e se il problema è nella definizione..perchè l'istruzione
codice:
/*solo per controllare che i dati vengano presi in modo corretto*/
printf("%s %s %d %d \n", elemento.nome, elemento.cognome, elemento.eta, elemento.altezza);
stampa correttamente??
PER FAVORE AIUTATEMI!!!