Ecco Stoicenko già ha risposto però attenzione che questa riga
p->inf.name=nome;
anche scritta così è errata perchè sia nome che il campo name della struct dato sono stringhe, quindi si deve ricorrere alla strcpy() per fare la copia... non è come per la classe string del C++ o per il python, col C siamo a un livello di astrazione un po' più basso :]
Ovviamente non sto a dirlo a Stoicenko che semplicemente non avrà notato che qulle variabili erano stringhe, ma lo dico a 123fabiomichele che aveva commesso l'errore nel codice originario...
In ogni caso ci sono un paio di cose che ancora non vanno... innanzitutto, questa assegnazione direi che va invertita:
numeri[0]=num; -> num = numeri[0]
(non molto belli anche quei due array globali comunque...)
e poi anche modificando la copia delle stringhe di cui dicevo prima in questo modo:
otterremmo con ogni probabilità un segmentation fault perché il campo name della struttura inf è un semplice puntatore a char, non ha allocato alcuno spazio né staticamente né dinamicamente...codice:strncpy(inf.name, nome, strlen(inf.name));