0Pricing
C Academy · Lektion

Ein CLI-Tool erstellen

Praktisches Beispiel

Ein CLI-Tool erstellen ist eine kostenlose C Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C Academy-Kurs umfasst insgesamt 4 Lektionen.

Alles zusammenführen

Nun verbinden wir Argumente, Optionen und Parsing zu einem kleinen, aber vollständigen CLI-Tool.

Unser Beispiel ist ein Dienstprogramm zur Zahlenformatierung, das einen Wert und einige Optionen liest und anschließend ein Ergebnis ausgibt.

#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;
}

Die Schnittstelle entwerfen

Gute CLI-Tools legen ihre Schnittstelle im Voraus fest. Unser Tool akzeptiert:

  • -v ausführliche Ausgabe
  • -r N die Ausgabe N-mal wiederholen
  • ein Positionsargument: den auszugebenden Text
#include <stdio.h>

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

Einstellungen deklarieren

Speichern Sie jedes konfigurierbare Verhalten in einer Variable mit einem sinnvollen Standardwert. So bleibt das Parsen von der eigentlichen Arbeit getrennt.

#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;
}

Mit getopt parsen

Verwenden Sie getopt, um die Flags zu verarbeiten. -r erwartet einen Wert, daher lautet der entsprechende Eintrag im optstring 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);
    }
    printf("verbose=%d repeat=%d\n", verbose, repeat);
    return 0;
}

Das Positionsargument lesen

Nach getopt zeigt optind auf das erste Nichtoptionsargument. Wir holen den Text an dieser Stelle.

Wenn kein solches Argument vorhanden ist, geben wir die Verwendung aus und beenden das Programm mit einem Fehlercode.

#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;
}

Numerische Eingaben validieren

Ein robustes Werkzeug prüft, ob für -r eine sinnvolle Zahl angegeben wurde. Lehnen Sie Wiederholungszahlen ab, die null oder negativ sind.

#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;
}

Die Aufgabe ausführen

Nachdem die Einstellungen geparst und validiert wurden, führen Sie die eigentliche Aufgabe aus. Hier geben wir den Text repeat-mal aus.

#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;
}

Ausführliche Ausgabe

Das Verbose-Flag kann Diagnoseinformationen ergänzen. Stellen Sie solche Ausgaben unter das Flag, damit die normale Ausgabe übersichtlich bleibt.

#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;
}

Das vollständige Tool

Hier ist das vollständige Programm, das alle Teile verbindet: parsen, validieren und anschließend ausführen.

#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;
}

Exit-Codes sind wichtig

CLI-Tools signalisieren ihren Erfolg über den Exit-Code. Geben Sie bei Erfolg 0 und bei Fehlern einen Wert ungleich null zurück.

Skripte und andere Programme verlassen sich darauf, um zu entscheiden, was als Nächstes geschehen soll.

#include <stdio.h>

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

Fehler nach stderr schreiben

Konventionell wird die normale Ausgabe über stdout und die Fehlerausgabe über stderr mit fprintf(stderr, ...) ausgegeben.

So können Benutzer Ergebnisse und Diagnosemeldungen bei der Umleitung der Ausgabe voneinander trennen.

#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;
}

Schnelltest

Testen Sie Ihr Verständnis der Konventionen für CLI-Tools.

Zusammenfassung

Sie haben ein vollständiges CLI-Tool erstellt:

  • Legen Sie die Schnittstelle fest und deklarieren Sie Einstellungen mit Standardwerten.
  • Parsen Sie Flags mit getopt; lesen Sie Positionsargumente ab optind.
  • Validieren Sie Eingaben, bevor Sie die Aufgabe ausführen.
  • Geben Sie aussagekräftige Exit-Codes zurück und schreiben Sie Fehler nach stderr.

Häufig gestellte Fragen

Ist die Lektion „Ein CLI-Tool erstellen“ kostenlos?

Ja — der vollständige Text von „Ein CLI-Tool erstellen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Ein CLI-Tool erstellen“?

Praktisches Beispiel Du übst C Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C Academy zu starten?

Keine Vorkenntnisse erforderlich. C Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Ein CLI-Tool erstellen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C Academy-Lektion Code schreiben und ausführen?

Ja. Jede C Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. argc und argv
  2. Optionen parsen
  3. getopt
  4. Ein CLI-Tool erstellen
← Zurück zu C Academy