Чтение/запись двоичных файлов массив структур
у меня есть глобальная структура массива book_array с некоторыми значениями в нем..и еще один глобальный массив один неинициализированный .. просто я хочу скопировать book_array содержание Для а двоичный файл и считайте этот файл в массив один. моя программа, похоже, не работает и массив один ничего не печатает!! любая помощь плз
Что я уже пробовал:
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct { int day; int month; int year; } dateStruct; typedef struct { char title[100]; char author[100]; char publisher[100]; char ISBN[30]; dateStruct date; int copies; int current; char category[30]; } book; book book_array[100] ; int i=4; book a[4]; void library_books(){ strcpy( book_array[0].title,"Automation and Robotics"); strcpy( book_array[0].author,"Miltiadis Boboulos"); strcpy( book_array[0].ISBN,"978-87-7681"); strcpy(book_array[0].category,"Electrical engineering"); book_array[0].copies=10; book_array[0].current=8; book_array[0].date.day=22; book_array[0].date.month=12; book_array[0].date.year=2017; strcpy( book_array[0].publisher,"book boon"); strcpy( book_array[1].title,"Concepts in Electric Circuits"); strcpy( book_array[1].author," Wasif Naem"); strcpy( book_array[1].ISBN,"7681-499-1"); strcpy(book_array[1].category,"Electrical engineering"); book_array[1].copies=20; book_array[1].current=10; book_array[1].date.day=21; book_array[1].date.month=12; book_array[1].date.year=2017; strcpy( book_array[1].publisher,"book boon"); strcpy( book_array[2].title,"Engineering Thermodynamics"); strcpy( book_array[2].author,"Tarik Shemmeri"); strcpy( book_array[2].ISBN,"7681-670-4"); strcpy(book_array[2].category,"Mechanical engineering"); book_array[2].copies=7; book_array[2].current=5; book_array[2].date.day=20; book_array[2].date.month=12; book_array[2].date.year=2017; strcpy( book_array[2].publisher,"book boon"); strcpy( book_array[3].title,"Fundamentals of Construction Management"); strcpy( book_array[3].author,"Dr. Abimbola Windapo"); strcpy( book_array[3].ISBN,"403-0362-9"); strcpy(book_array[3].category,"construction engineering"); book_array[3].copies=12; book_array[3].current=11; book_array[3].date.day=19; book_array[3].date.month=11; book_array[3].date.year=2017; strcpy( book_array[3].publisher,"Acair Ltd"); } void write_book(char fileName[]){ int j=0; FILE* ptr= fopen(fileName,"wb"); if(ptr==NULL) exit(1); while(!feof(ptr)&&j<i){ fwrite(book_array,sizeof(book_array),1,ptr); } fclose(ptr); } void read_book(char fileName[]){ int j=0; FILE* fptr= fopen(fileName,"rb"); if(fptr==NULL) exit(1); while(!feof(fptr)) fread(&(a),sizeof(a),3,fptr); fclose(fptr); } int main() { library_books(); write_book("b.dat"); read_book("b.dat"); printf("%s\n",a[0].author); printf("%s\n",a[1].ISBN); printf("%d\n",a[2].date.day); return 0; }