C
Birleştirme
Menü döngüsüyle çalışan bir CLI uygulaması yazarsın.
Birleştirme
Son adımda tüm parçaları birleştirip tam bir yapılacaklar CLI elde ediyoruz. Üç fonksiyon (add_task, list_tasks, complete_task) ve struct Task dizisi birlikte çalışır.
Bu derste üçüncü bir görev ekleyip akışı tamamlayacağız. Böylece ekle, tamamla, liste akışı uçtan uca çalışır.
Menü döngüsü fikri
Gerçek bir CLI uygulamada kullanıcı bir menüden seçim yapar: görev ekle, listele, tamamla veya çık. while ve switch ile bir menü döngüsü kurulabilir.
while (choice != 0) {
switch (choice) {
case 1: count = add_task(tasks, count, title); break;
case 2: list_tasks(tasks, count); break;
case 3: complete_task(tasks, id); break;
}
}
Bu derste menü yerine sabit bir akış kullanıyoruz: ekle, tamamla, tekrar ekle, listele.
Uygulama Üçüncü görevi ekle ve akışı tamamla
Aşağıdaki kodda complete_task(tasks, 1); çağrısından sonra count = add_task(tasks, count, "Okuma"); satırını ekle. Böylece üç görevli tam akış çalışır: ekle, ekle, tamamla, tekrar ekle, listele. Çıktı 1 Alışveriş 1, 2 Spor 0 ve 3 Okuma 0 olmalı.
Örnek çözümü göster
#include <stdio.h>
#include <string.h>
struct Task {
int id;
char title[50];
int done;
};
int add_task(struct Task tasks[], int count, const char *title) {
tasks[count].id = count + 1;
strcpy(tasks[count].title, title);
tasks[count].done = 0;
return count + 1;
}
void list_tasks(struct Task tasks[], int count) {
for (int i = 0; i < count; i++) {
printf("%d %s %d\n", tasks[i].id, tasks[i].title, tasks[i].done);
}
}
void complete_task(struct Task tasks[], int id) {
tasks[id - 1].done = 1;
}
int main(void) {
struct Task tasks[10];
int count = 0;
count = add_task(tasks, count, "Alışveriş");
count = add_task(tasks, count, "Spor");
complete_task(tasks, 1);
count = add_task(tasks, count, "Okuma");
list_tasks(tasks, count);
return 0;
}
Kendini test et
-
Üçüncü görevi ekle
count = add_task(tasks, count, ____); /* üçüncü görevi ekle */
Cevabı göster
count = add_task(tasks, count, "Okuma"); /* üçüncü görevi ekle */
-
Fonksiyonları eşleştir
- add_task
- görev ekleme
- list_tasks
- listeleme
- complete_task
- tamamlama
- while
- menü döngüsü
-
Bir CLI menü döngüsü için en uygun yapı nedir?
- struct tanımı
- sadece printf
- tek bir if
- while döngüsü ile switch
Cevabı göster
while döngüsü ile switch — while döngüsü tekrarı, switch ise seçimi sağlar.
Sıradaki ders: strchr