Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.31 KB | None | 0 0
  1. #include "functions.h"
  2.  
  3. void storeBooks(Book *books_list,char path[100])
  4. {
  5. FILE *f;
  6. Book *cur, *temp;
  7. f = fopen(path,"w");
  8. for (cur=books_list;cur!=NULL;temp = cur,cur=cur->next,free(temp))
  9. {
  10. fprintf(f,"%s $$$ %d\n",cur->name,cur->copies);
  11. }
  12. fclose(f);
  13. }
  14.  
  15. void borrowBook(Book *books_list, char book_name[NAME_LENGTH], int copies)
  16. {
  17. Book *cur, *prev=NULL;
  18. for (cur = books_list;cur!=NULL;prev = cur,cur=cur->next)
  19. {
  20. if (strcmp(book_name,cur->name) == 0)
  21. {
  22. cur->copies -=copies;
  23. if (cur->copies <1)
  24. {
  25. if (prev !=NULL)
  26. {
  27. prev = remove_from(cur,prev);
  28. }
  29. else
  30. {
  31. books_list = remove_from(cur,prev);
  32. }
  33. }
  34. }
  35. }
  36. }
  37.  
  38. Book* initBooksList(Book *p)
  39. {
  40.  
  41. FILE *fp = fopen("books.txt","r"); /* fp!=NULL checked at main */
  42. if (fp == NULL){
  43. exit(0);
  44. }
  45. char str[MAX_ROW];
  46. int actual_len = 0, cpy = 0,i;
  47. Book* init = p;
  48. Book* buffer = NULL;
  49. while (EOF != fgets(str, MAX_ROW, fp)){
  50. if (p == NULL)
  51. {
  52. char book_name_buffer[NAME_LENGTH];
  53. cpy = 0;
  54. p = (Book *)malloc(sizeof(Book));
  55. if (p == NULL) exit(1);
  56. for (int i = 0; str[i+1] != '$'; i++)
  57. {
  58. book_name_buffer[i] = str[i];
  59. actual_len += 1;
  60. }
  61. for (int i = actual_len+5; str[i] != '\n'; i++)
  62. {
  63. cpy = cpy * 10 + (int) (str[i]-'0');
  64. }
  65. strcpy(p->name, book_name_buffer);
  66. p->copies = cpy;
  67. p->next = NULL;
  68. actual_len = 0;
  69. init = p;
  70. }
  71. else{
  72. char book_name_buffer[NAME_LENGTH];
  73. actual_len = 0;
  74. cpy = 0;
  75. for (int i = 0; i < NAME_LENGTH; i++){
  76. book_name_buffer[i] = "";
  77. }
  78. for (int i = 0; str[i + 1] != '$'; i++)
  79. {
  80. book_name_buffer[i] = str[i];
  81. actual_len += 1;
  82. }
  83.  
  84. for (int i = actual_len+5; str[i] != '\n'; i++)
  85. {
  86.  
  87. cpy = cpy * 10 + (int)(str[i] - '0');
  88.  
  89. }
  90. Book* new_book = (Book *)malloc(sizeof(Book));
  91. if (new_book == NULL)
  92. exit(1);
  93. strcpy(new_book->name, book_name_buffer);
  94. new_book->copies = cpy;
  95. new_book->next = NULL;
  96. buffer = p;
  97. while (p != NULL && strcmp(new_book->name, p->name) > 0){
  98. buffer = p;
  99. p = p->next;
  100. }
  101. if (p == NULL){
  102. buffer->next = new_book;
  103. }
  104. else{
  105. buffer->next = new_book;
  106. new_book->next = p;
  107. }
  108. new_book = NULL;
  109. }
  110. p = init;
  111. buffer = NULL;
  112. }
  113. fclose(fp);
  114. return p;
  115. }
  116. Book* returnBook(char book_name[MAX_ROW],int cpy,Book *p){
  117. Book *init = p;
  118. Book *buffer = p;
  119. while (p->name != book_name && p != NULL){
  120. p = p->next;
  121. }
  122. if (p == NULL){
  123. Book* new_book = (Book*)malloc(sizeof(Book*));
  124. if (new_book == NULL)
  125. exit(1);
  126. strcpy(new_book->name, book_name);
  127. new_book->copies = cpy;
  128. while (p != NULL && strcmp(new_book->name, p->name) > 0){
  129. buffer = p;
  130. p = p->next;
  131. }
  132. if (p == NULL){
  133. buffer->next = new_book;
  134. new_book->next = NULL;
  135. }
  136. else{
  137. buffer->next = new_book;
  138. new_book->next = p;
  139. }
  140. }
  141. else{
  142. p->copies += cpy;
  143. }
  144. p = init;
  145. return p;
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement