Dichiari un solo elemento strutturato con

struct Insegnamenti Pos[i];

dato che i = 1 e poi utilizzi direttamente l'indice 1 ... ti ricordo che i vettori in C lavorano in base 0 ...

Inoltre nel ciclo

while(Pos[i].CD_Ins!=-1)

i non varia mai ...