Le problème est dans la ligne:
Site S[]= new Site[100];
Pour chaque itération, vous créez un nouveau tableau, donc à la fin, il n'est rempli que de pointeurs nuls. Lorsque vous essayez d'accéder au S [0], cela vous donnera un pointeur nul sur la deuxième itération.
C'est pourquoi il imprime d'abord, mais la deuxième fois que vous obtenez un pointeur nul. La première fois que le S [0] a une valeur, la deuxième fois ce n'est pas le cas.