Por cierto que casi se me olvida, en c tambien tienes la funcion sscanf. Ya se que no debería resolver y suponiendo que has seguido mi consejo de cargar por lineas, por lo menos que quede constancia que en C es posible hacerlo sin tantos malabarismos :))
Código C:
Ver originalsscanf(line
, "%d,%d,(%200[0-9a-zA-Z ,]s)\n", &nia
, &grado
, str_asign
); //ya tienes nia y grado
//tokenizas str_asign para encontrar numeros de asign
while(pch) {
//ya tienes asign
}
Lo siguiente es implementar el array de structs. Suerte con eso.
Saludos
vosk