Программа работает (но ошибки видны ниже), однако вы выполняете запись в папку root на Диске C. Выходной файл виден из консоли, но не из файлового проводника Windows. Обычно вам не следует использовать папку root на диске C.
Здесь круглые скобки поставлены не в том месте
if((books=fopen("mybooks.txt","a+")==NULL))
, что должно быть
if((books = fopen("mybooks.txt","a+")) == NULL)
Здесь указаны неправильные спецификации формата, неправильные в fprintf
, поскольку компилятор жаловался на
fprintf(books,"%d %s %d\n",b.name,b.id,b.qty);
должно быть
fprintf(books, "%s %d %d\n", b.name, b.id, b.qty);
Вы излишне дублируете запись названия книги в файл несколько строк выше с
fputs(b.name,books);
Вы используете неправильный размер буфера для fgets
здесь
fgets(b.name,SIZE,stdin);
, который должен быть
fgets(b.name, sizeof b.name, stdin);
Кроме того, вы должны проверить возвращаемые значения, особенно из функций пользовательского ввода, таких как fgets
и scanf
.
Кроме того, при вводе названия книги здесь ожидаются ошибки.
fgets(b.name, sizeof b.name, stdin);
Поэтому я предлагаю вам заменить эту строку на
if(scanf("%49[^\n]", b.name) != 1)
exit(1);
Лучше не смешивать способы ввода: выберите один.