✅ 목표 (Goal)

구조체 배열을 인자로 받아보자.

✅ 도서관 library 만들기

#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) { // 책을 반납하다.
//}
// 이전과 동일
// 이전과 동일