Ü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
#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
#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
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;
____;
}
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?
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ı |