구조체 배열을 인자로 받아보자.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include "book.h"
#include "library.h"
int main(void) {
book_t book1;
book_t book2;
book_t book3;
book_init(&book1, "야옹이 수영교실", "신현경", 14220);
book_init(&book2, "천개산 패밀리 1", "박현숙", 12600);
book_init(&book3, "세상은 이야기로 만들어졌다", "자미라 엘 우아실", 24300);
library_t lib; // 도서관을 하나 선언하고
lib_init(&lib, "남산"); // 도서관을 정의 및 초기화
lib_add_book(&lib, &book1); // "야옹이 수영교실" 을 구매함
lib_add_book(&lib, &book2); // "천개산 패밀리 1"을 구매함
lib_print_all_books(&lib); // 도서관에 있는 모든 책을 보여줘.
lib_add_book(&lib, &book3); // "세상은 이야기로 만들어졌다"을 추가로 구매함
lib_print_all_books(&lib); // 도서관에 있는 모든 책을 보여줘.
return 0;
}
#ifndef __LIBRARY_H__
#define __LIBRARY_H__
#include "book.h"
#define MAX_BOOKS (3)
typedef struct _library_t { // 이 이름을 쓰기가 싫은데.. ^^
char name[64]; // 도서관 이름, 예를 들면 남산 도서관
int count; // 책의 총 갯수
book_t* books[MAX_BOOKS]; // 책장, 서가?
} library_t;
void lib_init(library_t* lib, char* name); // 도서관을 초기화
void lib_add_book(library_t* lib, book_t* book); // 도서관에 책을 들여옴(=신규서적)
void lib_remove_book(library_t* lib, book_t* book); // 도서관에서 책이 나감(=분실됨 or 파기됨)
void lib_print_all_books(library_t* lib); // 도서관의 모든 책을 보여줘
//void borrow_book(book_t* book); // 책을 빌리다.
//void return_book(book_t* book); // 책을 반납하다.
#endif
#include "library.h"
void lib_init(library_t* lib, char* name) { // 도서관을 초기화
strcpy(lib->name, name);
lib->count = 0;
for (int i = 0; i < MAX_BOOKS; i++) {
lib->books[i] = NULL;
}
}
void lib_add_book(library_t* lib, book_t* book) { // 도서관에 책을 들여옴(=신규서적)
lib->books[lib->count++] = book;
}
void lib_remove_book(library_t* lib, book_t* book) { // 도서관에서 책이 나감(=분실됨 or 파기됨)
}
void lib_print_all_books(library_t* lib) { // 도서관의 모든 책을 보여줘
for (int i = 0; i < lib->count; i++) {
printf("[%d] ", (i + 1));
book_print(lib->books[i]);
}
}
//void borrow_book(book_t* book) { // 책을 빌리다.
// }
//void return_book(book_t* book) { // 책을 반납하다.
//}
// 이전과 동일
// 이전과 동일