как я вижу, вы стремитесь к концу файла
fseek(fe,0L,SEEK_END);
затем вы размещаете данные для структуры STUDENT
x=(STUDENT*)malloc(nrfete*sizeof(STUDENT));
тогда вы пытаетесь прочитать это:
fread(&x,sizeof(STUDENT),nrfete,fe);
но я думаю, что вы получите ошибку здесь. Потому что вы уже в конце файла. Таким образом, вы не заполняете данные, и у вас есть мусор в переменной x. В этом случае x [0] .prenume не является строкой с нулевым символом в конце. Таким образом, вы получаете сообщение об ошибке при попытке его напечатать.
чтобы проверить, правильно я или нет, вы можете заполнить выделенную память нулями после выделения, в этом случае вы не получите ошибку (но структура все равно будет пустой):
memset (x, '\ 0', nrfete * sizeof (STUDENT));
Вы также можете распечатать результат fread ()