Сохранит ли структура информацию для нескольких записей с одной декларацией? - PullRequest
0 голосов
/ 24 апреля 2020

Итак, моя задача - написать программу, которая читает информацию о книгах в библиотеке и не может сохранять информацию для более чем одной книги. Я объявил typedef структуры для книг и библиотеки. Указатель внутри структуры библиотеки представляет собой динамический массив c, элементы которого указывают на структуру book. Есть предложения?

typedef struct Sbooks
{
    char book_name[32];
    char book_genre[32];
    char author[32];
    int page_count;
    float price;

}books;
typedef struct Slibrary
{
    char library_name[32];
    struct Sbooks * bookp;
}lib;
void addBook(lib library,books book);
int main()
{
        FILE *fp;
        int i=1;
        lib library;
        books book;
        library.bookp = (books*)calloc(i,sizeof(books));
        fp=fopen("Books.bin","rb");
        if(fp==NULL)
        {
            printf("Error. File not found.");
            exit(1);
        }

        if(i>1)
        {
            library.bookp = (books*)realloc(library.bookp,sizeof(book)*i);
        }
        fread(library.bookp->book_name,sizeof(char),32,fp);
        fread(library.bookp->book_genre,sizeof(char),32,fp);
        fread(library.bookp->author,sizeof(char),32,fp);
        fread(&(library.bookp->page_count),sizeof(int),1,fp);
        fread(&(library.bookp->price),sizeof(float),1,fp);
        i++;
    }
    fclose(fp);
if(strcmp(Choice,"add")==0)
    {
        addBook(library, book);
    }
return 0;
}
void addBook(lib library,books book)
{
    printf("Enter the name of the book: ");
    scanf("%s\n", library.bookp->book_name);
    printf("Enter the genre of the book: ");
    scanf("%s\n", library.bookp->book_genre);
    printf("Enter the author of the book: ");
    scanf("%s\n", library.bookp->author);
    printf("Enter the page count of the book: ");
    scanf("%d\n", &(library.bookp->page_count));
    printf("Enter the price of the book: ");
    scanf("%f\n", &(library.bookp->price));

}

...