Причина, по которой вы получаете эту ошибку, заключается в том, что вы объявили struct
как:
struct {
char name[32];
int size;
int start;
int popularity;
} stasher_file;
Это не объявляет тип stasher_file
.Это объявляет анонимный struct
тип и создает глобальный экземпляр с именем stasher_file
.
То, что вы намеревались:
struct stasher_file {
char name[32];
int size;
int start;
int popularity;
};
Но учтите, что покаОтвет Брайана Р. Бонди был неверным по поводу вашего сообщения об ошибке, он прав, что вы пытаетесь записать в struct
, не выделив для этого места.Если вам нужен массив указателей на структуры struct stasher_file
, вам необходимо вызвать malloc
, чтобы выделить место для каждой из них:
struct stasher_file *newFile = malloc(sizeof *newFile);
if (newFile == NULL) {
/* Failure handling goes here. */
}
strncpy(newFile->name, name, 32);
newFile->size = size;
...
(Кстати, будьте осторожны при использовании strncpy
; этоне гарантируется NUL-прекращение.)