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:

codice:
   strncpy(inf.name, nome, strlen(inf.name));
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...