C
Soru ekleme
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.
Örnek çözümü göster
#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;
}
Kendini test et
-
add_question parçalarını eşle
- struct Question *q
- Soru dizisi
- int *count
- Sayı işaretçisi
- const char *text
- Soru metni
- int correct
- Doğru cevap
-
add_question'da neden *count kullanılır?
- Sayacı değiştirmek için
- Bellek ayırmak için
- Dize kopyalamak için
- Döngü için
Cevabı göster
Sayacı değiştirmek için — *count, fonksiyonun çağıranın sayacını değiştirmesini sağlar.
-
Sayı artırma ifadesi
(*____)++;
Cevabı göster
(*count)++;
Sıradaki ders: Quiz oynatma