CodeBlanks Logo Icon CodeBlanks

Ürün ekleme

  • C kursu
  • Başlangıç
  • Ders 49/116
  • 6 dk

Sepete ürün ekleyen fonksiyonu yazarsın.

cart_add fonksiyonu

Bu derste cart_add fonksiyonunu yazacağız. Bu fonksiyon sepete yeni bir öğe ekler; cart_size'ı bir artırır.

void cart_add(const char *name, double price, int qty) {
    if (cart_size >= MAX_ITEMS) return;
    strcpy(cart[cart_size].name, name);
    cart[cart_size].price = price;
    cart[cart_size].qty = qty;
    cart_size++;
}

strcpy dize kopyalar; cart_size sepetteki bir sonraki boş yeri gösterir. Sepet doluysa erken çıkılır. Bu güvenlik denetimi taşmayı önler.

strcpy ile dize kopyalama

C'de dizeleri = ile atayamazsın; strcpy kullanmalısın. strcpy bir dizeyi hedef diziye karakter karakter kopyalar.

char name[32];
strcpy(name, "Elma");  // name artık "Elma"

Bu yüzden cart_add içinde strcpy(cart[cart_size].name, name) kullanıyoruz. string.h başlığında tanımlıdır. Dize taşmasını önlemek için strncpy de tercih edilebilir.

Uygulama İki ürün ekle

cart_add fonksiyonunu yaz: void cart_add(const char *name, double price, int qty). Sepet doluysa (cart_size >= MAX_ITEMS) erken çık. strcpy ile adı kopyala, fiyat ve miktarı ata, cart_size++. main zaten iki ürün ekliyor; sen yalnızca fonksiyonu tamamla. Beklenen çıktı: 2 ürün eklendi.

Başlangıç kodu

main.c
#include <stdio.h>
#include <string.h>

#define MAX_ITEMS 10

struct CartItem {
    char name[32];
    double price;
    int qty;
};

struct CartItem cart[MAX_ITEMS];
int cart_size = 0;

// cart_add fonksiyonunu buraya yaz

int main(void) {
    cart_add("Elma", 2.50, 3);
    cart_add("Ekmek", 5.00, 1);
    printf("%d ürün eklendi\n", cart_size);
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>
#include <string.h>

#define MAX_ITEMS 10

struct CartItem {
    char name[32];
    double price;
    int qty;
};

struct CartItem cart[MAX_ITEMS];
int cart_size = 0;

void cart_add(const char *name, double price, int qty) {
    if (cart_size >= MAX_ITEMS) return;
    strcpy(cart[cart_size].name, name);
    cart[cart_size].price = price;
    cart[cart_size].qty = qty;
    cart_size++;
}

int main(void) {
    cart_add("Elma", 2.50, 3);
    cart_add("Ekmek", 5.00, 1);
    printf("%d ürün eklendi\n", cart_size);
    return 0;
}

Beklenen çıktı

2 ürün eklendi

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 cart_size'ı artır

Soru
void cart_add(const char *name, double price, int qty) {
    if (cart_size >= MAX_ITEMS) return;
    strcpy(cart[cart_size].name, name);
    cart[cart_size].price = price;
    cart[cart_size].qty = qty;
    ____;
}
Cevap
void cart_add(const char *name, double price, int qty) {
    if (cart_size >= MAX_ITEMS) return;
    strcpy(cart[cart_size].name, name);
    cart[cart_size].price = price;
    cart[cart_size].qty = qty;
    cart_size++;
}

Açıklama: cart_size++ bir sonraki boş yere geçer.

2 cart_add sonunda cart_size ne olur?

main.c
cart_add("Elma", 2.50, 3);
cart_add("Ekmek", 5.00, 1);
  • 0
  • 2 Doğru cevap
  • 1
  • MAX_ITEMS

Açıklama: İki ekleme sonrası cart_size = 2 olur.

3 Ekleme parçalarını eşleştir

Kavram Anlamı
strcpy Dize kopyalar
cart_size++ Sayıyı artırır
MAX_ITEMS Üst sınır
void cart_add Fonksiyon imzası

Başlangıç bölümündeki tüm dersler