Вы делаете
fgets(studente[i].matricola, 4, stdin);
Но определение matricola
равно
char matricola[3];
Это означает, что вы можете выйти за пределы массива и иметь неопределенное поведение .
При использовании fgets
с массивами (не указателями), всегда используйте sizeof
, чтобы получить размер:
fgets(studente[i].matricola, sizeof studente[i].matricola, stdin);
Таким образом, вы всегда будете передавать правильный размер.
И, конечно, у вас возникает та же проблема после цикла при чтении в автономный массив matricola
.
Если вам действительно нужна трехсимвольная строка, то вам нужно увеличить размер до 4
(чтобы соответствовать нулевому ограничителю). Если вам нужна строка символов четыре , то размер должен быть 5
.