Ваша структура loop и scanf выглядит неправильно ..
Сначала вы читаете строку (scanf
в условии while), затем int (word
== 1), затем другую строку (снова условие, word
== 2), другую строку ( в то время как условие снова, word
== 3), и, наконец, еще одна строка и long long int
(word
== 4).
Я бы переписал твой внутренний цикл с помощью переключателя
/* pseudo-code */
while (fgets(buf, sizeof buf, stdin)) {
/* realloc here */
chk = sscanf(buf, "%4d%20s%20s%10lld",
&studentArray[studcount].studentID,
studentArray[studcount].lastName,
studentArray[studcount].firstName,
&studentArray[studcount].phoneNumber);
if (chk != 4) /* deal with error */;
}