Ciao ^^ ,
Sono un utente normale del forum ma penso di aver capito il problema.
Hai detto che nel record hai bisogno di un campo array di char quindi , come giusto che sia , hai creato un tipo array di char con il comando:
typedef char stringa[cardinalità];
Ma quando vuoi dichiarare un oggetto del tipo stringa ti basta scrivere:
stringa nome;
e non
stringa nome[3];
Poichè in quest' ultimo modo creeresti una matrice di char, cioè un array di array di char ( xD ) ed ecco perchè ti dice errore del tipo char*[3][256] , stai definendo una matrice 3x256 di char.
Oltre questo , anche se scrivessi stringa nome; la riga
p->nome= nome
non è corretta poichè per due oggetti di tipo stringa non è possibile avere un' assegnazione come tra due tipi atomici ( int , float , char etc.. ). Per facilitare l' assegnazione tra due stringhe esiste la libreria <string.h> nella quale esiste il comando strcpy(stringa,stringa); Quindi la riga deve essere cambiata in :
strcpy(p->nome,nome); // Assegno la stringa nome in p->nome
Spero di essere stato chiaro e che ora funzioni il prog ^^
Distinti Saluti,
Alessandro