0Pricing
C Academy · Ders

CLI Aracı Oluşturma

Pratik örnek

CLI Aracı Oluşturma, CoddyKit'te ücretsiz bir C Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C Academy kursu toplamda 4 dersten oluşur.

Hepsini bir araya getirme

Şimdi bağımsız değişkenleri, seçenekleri ve ayrıştırmayı küçük ama eksiksiz bir CLI aracı içinde birleştiriyoruz.

Örneğimiz, bir değer ile birkaç seçeneği okuyup ardından bir sonuç yazdıran sayı biçimlendirme aracıdır.

#include <stdio.h>

int main(int argc, char *argv[]) {
    if (argc < 2) {
        printf("Usage: %s <number>\n", argv[0]);
        return 1;
    }
    printf("You passed: %s\n", argv[1]);
    return 0;
}

Arayüzü tasarlama

İyi CLI araçları arayüzlerini önceden tanımlar. Aracımız şunları kabul edecek:

  • -v ayrıntılı çıktı
  • -r N çıktıyı N kez yineleme
  • bir konumsal bağımsız değişken: yazdırılacak metin
#include <stdio.h>

int main(void) {
    printf("Interface: prog [-v] [-r N] <text>\n");
    return 0;
}

Ayarları bildirme

Yapılandırılabilir her davranışı, makul bir varsayılan değere sahip bir değişkende tutun. Bu, ayrıştırmayı asıl işten ayrı tutar.

#include <stdio.h>

int main(void) {
    int verbose = 0;
    int repeat = 1;
    const char *text = NULL;
    printf("defaults: verbose=%d repeat=%d\n", verbose, repeat);
    return 0;
}

getopt ile ayrıştırma

Bayrakları doldurmak için getopt kullanın. -r bir değer aldığı için optstring girdisi r: olur.

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc, char *argv[]) {
    int verbose = 0, repeat = 1, opt;
    while ((opt = getopt(argc, argv, "vr:")) != -1) {
        if (opt == 'v') verbose = 1;
        else if (opt == 'r') repeat = atoi(optarg);
    }
    printf("verbose=%d repeat=%d\n", verbose, repeat);
    return 0;
}

Konumsal bağımsız değişkeni okuma

getopt işleminden sonra optind, ilk seçenek olmayan bağımsız değişkeni gösterir. Metni buradan alırız.

Hiçbiri yoksa kullanımı yazdırır ve bir hata koduyla çıkarız.

#include <stdio.h>
#include <unistd.h>

int main(int argc, char *argv[]) {
    while (getopt(argc, argv, "vr:") != -1) { }
    if (optind >= argc) {
        printf("Error: missing text argument\n");
        return 1;
    }
    printf("text = %s\n", argv[optind]);
    return 0;
}

Sayısal girdiyi doğrulama

Sağlam bir araç, -r seçeneğine makul bir sayı verildiğini denetler. Sıfır veya negatif yineleme sayılarını reddedin.

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc, char *argv[]) {
    int repeat = 1, opt;
    while ((opt = getopt(argc, argv, "r:")) != -1) {
        if (opt == 'r') repeat = atoi(optarg);
    }
    if (repeat < 1) {
        printf("Error: repeat must be >= 1\n");
        return 1;
    }
    printf("repeat = %d\n", repeat);
    return 0;
}

İşi gerçekleştirme

Ayarlar ayrıştırılıp doğrulandıktan sonra asıl görevi gerçekleştirin. Burada metni repeat kez yazdırıyoruz.

#include <stdio.h>

int main(void) {
    const char *text = "hello";
    int repeat = 3;
    for (int i = 0; i < repeat; i++) {
        printf("%s\n", text);
    }
    return 0;
}

Ayrıntılı çıktı

Ayrıntılı bayrağı tanılama bilgileri ekleyebilir. Normal çıktının temiz kalması için bu yazdırma işlemlerini bayrağın arkasında koşula bağlayın.

#include <stdio.h>

int main(void) {
    int verbose = 1;
    const char *text = "hi";
    if (verbose) printf("[debug] about to print text\n");
    printf("%s\n", text);
    return 0;
}

Eksiksiz araç

Her parçayı bir araya getiren tam program aşağıdadır: ayrıştır, doğrula, ardından çalıştır.

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc, char *argv[]) {
    int verbose = 0, repeat = 1, opt;
    while ((opt = getopt(argc, argv, "vr:")) != -1) {
        if (opt == 'v') verbose = 1;
        else if (opt == 'r') repeat = atoi(optarg);
    }
    if (optind >= argc) { printf("Usage: prog [-v] [-r N] <text>\n"); return 1; }
    const char *text = argv[optind];
    if (verbose) printf("[debug] repeat=%d\n", repeat);
    for (int i = 0; i < repeat; i++) printf("%s\n", text);
    return 0;
}

Çıkış kodları önemlidir

CLI araçları başarıyı çıkış kodları aracılığıyla bildirir. Başarılı durumda 0, hatalarda ise sıfır olmayan bir değer döndürün.

Betikler ve diğer programlar bundan sonra ne yapacaklarına karar vermek için buna güvenir.

#include <stdio.h>

int main(int argc, char *argv[]) {
    if (argc < 2) {
        printf("failure\n");
        return 2;
    }
    printf("success\n");
    return 0;
}

Hataları stderr'e yazma

Geleneksel olarak normal çıktı stdout'a, hatalar ise fprintf(stderr, ...) aracılığıyla stderr'e gider.

Bu, çıktıyı yeniden yönlendirirken kullanıcıların sonuçları tanılama iletilerinden ayırmasını sağlar.

#include <stdio.h>

int main(int argc, char *argv[]) {
    if (argc < 2) {
        fprintf(stderr, "Error: need an argument\n");
        return 1;
    }
    printf("%s\n", argv[1]);
    return 0;
}

Kısa Denetim

CLI aracı kuralları konusundaki anlayışınızı sınayın.

Özet

Eksiksiz bir CLI aracı oluşturdunuz:

  • Arayüzü tanımlayın, varsayılan değerlerle ayarları bildirin.
  • Bayrakları getopt ile ayrıştırın; konumsal bağımsız değişkenleri optind üzerinden okuyun.
  • İşi yapmadan önce girdileri doğrulayın.
  • Anlamlı çıkış kodları döndürün ve hataları stderr'e gönderin.

Sıkça Sorulan Sorular

“CLI Aracı Oluşturma” dersi ücretsiz mi?

Evet — “CLI Aracı Oluşturma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C Academy kursu toplamda 4 dersten oluşur.

“CLI Aracı Oluşturma” dersinde ne öğreneceğim?

Pratik örnek C Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“CLI Aracı Oluşturma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. argc ve argv
  2. Seçenekleri Ayrıştırma
  3. getopt
  4. CLI Aracı Oluşturma
← C Academy Sayfasına Dön