CodeBlanks Logo Icon CodeBlanks

Soru ekleme

  • C kursu
  • Orta seviye
  • Ders 43/116
  • 6 dk

AddQuestion fonksiyonuyla quiz'e soru eklemeyi öğrenirsin.

Soru ekleme

İkinci ders add_question fonksiyonunu tanımlar. Bu fonksiyon, bir soruyu diziye ekler ve sayacı bir artırır. İşaretçi kullanımı, sayacı değiştirebilmek için şarttır.

İmza: void add_question(struct Question *q, int *count, const char *text, int correct). Gövde: strcpy(q[*count].text, text); q[*count].correct = correct; (*count)++;. Burada count işaretçisidir; çünkü fonksiyon çağrıdan sonraki değeri değiştirmelidir. strcpy, dizeyi güvenle kopyalar. Önceki dersin çözümü başlangıç koduna dahildir.

strcpy ve sayı artırma

add_question'ın gövdesi iki temel işlem yapar: dize kopyalama ve sayı artırma. İkisi de işaretçi mantığına dayanır.

strcpy(q[*count].text, text); çağrısı, text'i dizinin *count'ıncı elemanına kopyalar. (*count)++ ise sayacı bir artırır. Parantezler şarttır; *count++ yazarsan bu, *(count++) olarak yorumlanır ve yanlış elemanı günceller. İşaretçi aritmetiği bu tür ayrımlara dikkat ister. Bu desen, C'de dinamik dizi yönetiminin temelidir.

Uygulama add_question fonksiyonunu yaz

void add_question(struct Question *q, int *count, const char *text, int correct) yaz. Gövdede strcpy(q[*count].text, text); ile metni kopyala, q[*count].correct = correct; ata, (*count)++; ile sayacı artır. main içinde struct Question questions[10]; int count = 0; tanımla; add_question(questions, &count, "Başkent?", 0); ve add_question(questions, &count, "2+2?", 1); çağır; printf("%d soru eklendi\n", count); ile yazdır.

Başlangıç kodu

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

struct Question {
    char text[64];
    int correct;
};

// void add_question fonksiyonunu yaz (q, count, text, correct)
// main'de 2 soru ekle ve kaç soru eklendiğini yazdır

int main(void) {
    printf("Quiz hazır\n");
    return 0;
}

Örnek çözüm

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

struct Question {
    char text[64];
    int correct;
};

void add_question(struct Question *q, int *count, const char *text, int correct) {
    strcpy(q[*count].text, text);
    q[*count].correct = correct;
    (*count)++;
}

int main(void) {
    struct Question questions[10];
    int count = 0;
    add_question(questions, &count, "Başkent?", 0);
    add_question(questions, &count, "2+2?", 1);
    printf("%d soru eklendi\n", count);
    return 0;
}

Beklenen çıktı

2 soru eklendi

Soru ve cevaplar

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

1 add_question parçalarını eşle

Kavram Anlamı
struct Question *q Soru dizisi
int *count Sayı işaretçisi
const char *text Soru metni
int correct Doğru cevap

2 add_question'da neden *count kullanılır?

  • Sayacı değiştirmek için Doğru cevap
  • Bellek ayırmak için
  • Dize kopyalamak için
  • Döngü için

Açıklama: *count, fonksiyonun çağıranın sayacını değiştirmesini sağlar.

3 Sayı artırma ifadesi

Soru
(*____)++;
Cevap
(*count)++;

Açıklama: (*count)++ sayacı işaretçi üzerinden artırır.

Orta seviye bölümündeki tüm dersler