Первый параметр, переданный fwrite , должен быть адресом, а переменная, адрес которой вы передаете, должна иметь достаточно памяти для хранения количества объектов, которые вы планируете прочитать.
Таким образом, есть два способа:
Создание переменной в стеке:
Вы размещаете переменную в стеке и передаете ее адрес fwrite
ELEM s;
fwrite(&s,sizeof(ELEM),1,f);
или
Динамическое выделение памяти:
ELEM *s;
Должен быть выделен объем памяти, эквивалентный для хранения объектов типа ELEM
, которые выхочу почитать.
ELEM *s = malloc(sizeof *s);
В этом случае не забудьте освободить память после того, как вы ее сделали:
free(s);