Не получается записать данные в файл СИ
Есть программа для библиотеки. В ней мы вводим к примеру две структуры данных книг. Потом я пытаюсь записать его. Ошибку саму отлавливает компилятор. Нужно записать данные в файл. Могу дать полный исходник программы, если надо, но поидеи, все было хорошо до появления строк кода, что приведены ниже. Также скрин ошибки

massive = это массив структур
dimension = количество этих структур.
void initzapis(Kniga* massive, int dimension)
{
int vubor = 0;
FILE* data;
do {
printf("Выберите режим работы с библиотекой:\n1.Запись новых файлов библиотеки;\n2.Дозапись и чтение существующей библиотеки;\nВаш выбор: ");
scanf_s("%d", &vubor);
if (vubor == 1 || vubor == 2)
break;
} while (1);
if (vubor == 1)
fopen_s(&data, "data3.txt", "w");//создание нового файла и запись в него
else fopen_s(&data, "data.txt", "ab");//дозапись и чтение
if (!data)
{
puts("Failed to open file \n");
exit(1);
}
for (int i = 0; i < dimension; i++)
zapis(massive[i], &data);
}
void zapis(Kniga kniga, FILE* data)
{
fprintf(data, "%s\n%s\n%d %s;\n%f %f.\n", kniga.nazva, kniga.autor, kniga.god, kniga.vidavniztvo, kniga.sobivartist, kniga.cina);
}