Ciao a tutti,
sto lavorando in c con una lista

typedef struct person
{
char *name;
char *surname;
.......
struct peson *next;
} person;

la quale voglio riempire con i dati di ogni persona. Il mio problema è che non riesco ad allocare una spazio di memoria differente per i dati di ogni persona, e quindi ogni volta mi sovrascrivo i dati precedentemente salvati.

Il codice che uso per salvare i dati di ogni persona è il seguente:


person *first = NULL, *last;

for(per ogni persona)
{
char* name;
char* surname;

//acquisisco in name e surname i dati della nuova persona
//.................

newperson->name = name;
newperson->surname = surname;

if(first == NULL)
{
first = newperson;
}
else
{
last->next = newperson;
}
last = newperson;
}

IMPORTANTE: faccio un ciclo per acquisire name e surname e quindi due puntatori a ogni ciclo sono sovrascritti

quello che non riesco a fare è creare una zona differente di memoria ad ogni ciclo e passare alla mia lista
l'indirizzo di tale locazione.

Spero di essere stato abbastanza chiare.

Grazie a chi risponderà in anticipo.