Il problema è nella linea:
Site S[]= new Site[100];
Per ogni iterazione si crea un nuovo array, quindi alla fine è pieno di puntatori nulli. Quando provi ad accedere a S [0] ti darà un puntatore nullo sulla seconda iterazione.
Ecco perché prima stampe, ma la seconda volta che ottieni un puntatore nullo. La prima volta che S [0] ha un valore, la seconda volta che no.