Я пытаюсь вставить данные в свою структуру, теперь, когда я делаю это, в нее попадает только первая строка файла.
Я предполагаю, что не знаю, сколько у меня именфайл.
int InputData(student ** p_array, FILE * fp) {
student * arr;
int i = 1;`
if (!(arr = (student*)malloc(sizeof(student)))) {
printf("no");
_getch();
exit(1);
}
while (fscanf(fp, "%s %d %d %d", arr[i - 1].name, &arr[i - 1].grades[0], &arr[i - 1].grades[1], &arr[i - 1].grades[2]) != EOF) {
i++;
if (!(arr = (student*)realloc(arr, i*sizeof(student))))
{printf("no"); _getch(); exit(1); }
}
arr = (student*)realloc(arr, (i - 1) * sizeof(student));
*p_array = arr;
if (i = 1)
return (i); /*return the number of students*/
else
return (i - 1);
}
пример содержимого файла
Moshe 100 80 90
Dana 56 89 78
Maya 88 87 91
Adam 90 74 81
массив получает только эту строку
Moshe 100 80 90
Пожалуйста, помогите мне исправить код.