Вы должны выделить для него пространство, например, malloc
, потому что, как видно из ошибки, вы возвращаете указатель на локальный адрес, что является проблемой, поскольку после выхода из этой функции массив files
будет освобожден / не существует. Таким образом, возвращаемый вами указатель будет указывать на недопустимое расположение в памяти.
Так что сделайте что-то вроде этого:
struct fentry *files = malloc(MAXFILES * sizeof(fentry);
Также в этом случае не забудьте освободить выделенную память с помощью free(*ptr_to_array)
, когда больше не нужен.