Kütüphane modülü
- C kursu
- Orta seviye
- Ders 66/116
- 6 dk
Library modülüyle koleksiyon yönetimini kurarsın.
Library struct'ı
Bir kütüphane birden çok kitabı yönetir. Library struct'ı bir Book dizisi ve bir sayaçtan oluşur: typedef struct { Book books[10]; int count; } Library;. count eklenen kitap sayısını tutar.
Bu tasarım sabit kapasitelidir (10 kitap); dinamik bellek daha sonra gelir. library_init fonksiyonu count'u sıfırlar; library_add yeni kitabı dizinin sonuna ekler ve count'u artırır. Bu desen, C'de koleksiyon yönetiminin temelidir; sabit kapasiteli dizi + sayaç.
init ve add fonksiyonları
void library_init(Library *lib) { lib->count = 0; } ile koleksiyonu sıfırlarsın. void library_add(Library *lib, Book b) { lib->books[lib->count++] = b; } ile kitap eklersin. -> işleci işaretçiden alan seçer.
lib->count++ önce mevcut count'u indeks olarak kullanır sonra artırır. Bu sayede bir sonraki ekleme bir sonraki indekse gider. main'de Library lib; library_init(&lib); ile başlar, sonra library_add(&lib, b1); ile kitap eklersin. Bu desen, C'de nesne yönelimli yaklaşımın temelidir: struct + fonksiyonlar struct işaretçisi alır.
Uygulama Library modülünü ekle
Var olan Book ve Member struct'larının ardından Library struct'ını ekle: typedef struct { Book books[10]; int count; } Library;. void library_init(Library *lib) yaz; lib->count = 0;. void library_add(Library *lib, Book b) yaz; lib->books[lib->count++] = b;. main içine Library lib; library_init(&lib);, iki kitap ekle ve print_book(&lib.books[0]); ile print_book(&lib.books[1]); çağır.
Başlangıç kodu
#include <stdio.h>
#include <string.h>
typedef struct {
char title[64];
int year;
int borrowed;
} Book;
typedef struct {
char name[64];
int id;
} Member;
void print_book(Book *b) {
printf("Book: %s (%d)\n", b->title, b->year);
}
int main(void) {
Book b = {"C Tutorial", 2024, 0};
print_book(&b);
return 0;
}
// Library struct'ını ve library_init, library_add fonksiyonlarını yaz
// main'de Library lib; library_init(&lib); kitaplar ekle ve yazdırÖrnek çözüm
#include <stdio.h>
#include <string.h>
typedef struct {
char title[64];
int year;
int borrowed;
} Book;
typedef struct {
char name[64];
int id;
} Member;
typedef struct {
Book books[10];
int count;
} Library;
void library_init(Library *lib) {
lib->count = 0;
}
void library_add(Library *lib, Book b) {
lib->books[lib->count++] = b;
}
void print_book(Book *b) {
printf("Book: %s (%d)\n", b->title, b->year);
}
int main(void) {
Library lib;
library_init(&lib);
Book b1 = {"C Tutorial", 2024, 0};
Book b2 = {"Pointers", 2023, 0};
library_add(&lib, b1);
library_add(&lib, b2);
print_book(&lib.books[0]);
print_book(&lib.books[1]);
return 0;
}Beklenen çıktı
Book: C Tutorial (2024) Book: Pointers (2023)
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 library_add ne yapar?
- Kitabı siler
- Kitabı diziye ekler ve count'u artırır Doğru cevap
- Kitabı ödünç verir
- Kitabı arar
Açıklama: library_add kitabı diziye ekler ve count'u bir artırır.
2 library_add gövdesini tamamla
void library_add(Library *lib, Book b) {
lib->books[lib->____++] = b;
}
void library_add(Library *lib, Book b) {
lib->books[lib->count++] = b;
}
Açıklama: lib->books[lib->count++] = b; kitabı ekler ve sayacı artırır.
3 Library işlemlerini eşle
| Kavram | Anlamı |
|---|---|
library_init |
count'u sıfırlar |
library_add |
Kitap ekler |
lib->count |
Kitap sayısı |
books[10] |
Kapasite |