Оператор sizeof(int)
дает вам только это, размер в байтах целого числа. Итак, в выражении:
movies = (list_t *)malloc(n * sizeof(int));
Вы фактически выделяете пространство памяти для n
целых чисел, что было бы хорошо, если бы ваш list_t
имел размер, равный целому числу, но это не так,Вам нужно выделить место для n
list_t
s следующим образом:
movies = malloc(n * sizeof(list_t));
Кроме того, вы закрываете указатель файла с помощью fclose(pointer)
, но затем используете его в следующем цикле for
: fscanf(pointer, ...)
, это ошибка. Вы можете сделать fopen
снова или сбросить fclose
и использовать fseek
, чтобы вернуться к началу файла. В заключение, вам не нужно использовать m
в этом цикле, вы можете использовать i
следующим образом:
..., movies[i].title, movies[i].genre, &movies[i].avscore, movies[i].rating, &movies[i].rentals, &movies[i].year);
, а затем удалить оператор m++
вместе с m
переменная в целом.