Мне нужен ваш входной файл, чтобы проверить это, но я немного изменил ваш код. Я тоже студент, поэтому приношу свои извинения, если я сделал что-то не так.
Из того, что я вижу, я считаю, что ваш код можно улучшить следующим образом:
Определение структуры:
typedef struct aluno {
char name[50], address[50], number[9];
int year;
} Aluno;
Функция для чтения файла и построения вашего массива:
Aluno* lerFicheiroTexto(char* nameFile, int tamanho)
{
FILE* file = fopen(nameFile, "r");
if (file == NULL) {
printf("Error opening the file text");
return NULL;
}
Aluno* listaAlunos = malloc(sizeof(Aluno));
char line[255];
while (fgets(line, 255, file) != NULL) {
Aluno currAluno;
sscanf(line, "%s %s %d %s", currAluno.name, currAluno.address, currAluno.year, currAluno.number);
listaAlunos[tamanho] = currAluno;
listaAlunos = realloc(listaAlunos, sizeof(Aluno) * ++tamanho);
}
fclose(file);
return listaAlunos;
}