Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "functions.h"
- void storeBooks(Book *books_list,char path[100])
- {
- FILE *f;
- Book *cur, *temp;
- f = fopen(path,"w");
- for (cur=books_list;cur!=NULL;temp = cur,cur=cur->next,free(temp))
- {
- fprintf(f,"%s $$$ %d\n",cur->name,cur->copies);
- }
- fclose(f);
- }
- void borrowBook(Book *books_list, char book_name[NAME_LENGTH], int copies)
- {
- Book *cur, *prev=NULL;
- for (cur = books_list;cur!=NULL;prev = cur,cur=cur->next)
- {
- if (strcmp(book_name,cur->name) == 0)
- {
- cur->copies -=copies;
- if (cur->copies <1)
- {
- if (prev !=NULL)
- {
- prev = remove_from(cur,prev);
- }
- else
- {
- books_list = remove_from(cur,prev);
- }
- }
- }
- }
- }
- Book* initBooksList(Book *p)
- {
- FILE *fp = fopen("books.txt","r"); /* fp!=NULL checked at main */
- if (fp == NULL){
- exit(0);
- }
- char str[MAX_ROW];
- int actual_len = 0, cpy = 0,i;
- Book* init = p;
- Book* buffer = NULL;
- while (EOF != fgets(str, MAX_ROW, fp)){
- if (p == NULL)
- {
- char book_name_buffer[NAME_LENGTH];
- cpy = 0;
- p = (Book *)malloc(sizeof(Book));
- if (p == NULL) exit(1);
- for (int i = 0; str[i+1] != '$'; i++)
- {
- book_name_buffer[i] = str[i];
- actual_len += 1;
- }
- for (int i = actual_len+5; str[i] != '\n'; i++)
- {
- cpy = cpy * 10 + (int) (str[i]-'0');
- }
- strcpy(p->name, book_name_buffer);
- p->copies = cpy;
- p->next = NULL;
- actual_len = 0;
- init = p;
- }
- else{
- char book_name_buffer[NAME_LENGTH];
- actual_len = 0;
- cpy = 0;
- for (int i = 0; i < NAME_LENGTH; i++){
- book_name_buffer[i] = "";
- }
- for (int i = 0; str[i + 1] != '$'; i++)
- {
- book_name_buffer[i] = str[i];
- actual_len += 1;
- }
- for (int i = actual_len+5; str[i] != '\n'; i++)
- {
- cpy = cpy * 10 + (int)(str[i] - '0');
- }
- Book* new_book = (Book *)malloc(sizeof(Book));
- if (new_book == NULL)
- exit(1);
- strcpy(new_book->name, book_name_buffer);
- new_book->copies = cpy;
- new_book->next = NULL;
- buffer = p;
- while (p != NULL && strcmp(new_book->name, p->name) > 0){
- buffer = p;
- p = p->next;
- }
- if (p == NULL){
- buffer->next = new_book;
- }
- else{
- buffer->next = new_book;
- new_book->next = p;
- }
- new_book = NULL;
- }
- p = init;
- buffer = NULL;
- }
- fclose(fp);
- return p;
- }
- Book* returnBook(char book_name[MAX_ROW],int cpy,Book *p){
- Book *init = p;
- Book *buffer = p;
- while (p->name != book_name && p != NULL){
- p = p->next;
- }
- if (p == NULL){
- Book* new_book = (Book*)malloc(sizeof(Book*));
- if (new_book == NULL)
- exit(1);
- strcpy(new_book->name, book_name);
- new_book->copies = cpy;
- while (p != NULL && strcmp(new_book->name, p->name) > 0){
- buffer = p;
- p = p->next;
- }
- if (p == NULL){
- buffer->next = new_book;
- new_book->next = NULL;
- }
- else{
- buffer->next = new_book;
- new_book->next = p;
- }
- }
- else{
- p->copies += cpy;
- }
- p = init;
- return p;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement