0Pricing
C Academy · Lektion

argc und argv

Programmargumente lesen

argc und argv ist eine kostenlose C Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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.

Programme erhalten Argumente

Wenn Sie ein Programm über ein Terminal ausführen, können Sie ihm zusätzliche Wörter, sogenannte Kommandozeilenargumente, übergeben.

C stellt sie main über zwei Parameter bereit: argc (Argumentanzahl) und argv (Argumentvektor).

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("This program received %d arguments\n", argc);
    return 0;
}

Die Signatur von main

Die vollständige Form von main lautet:

  • int main(int argc, char *argv[])

argc ist die Anzahl der Argumente. argv ist ein Array aus Zeichenkettenzeigern, jeweils einem pro Argument.

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("argc = %d\n", argc);
    return 0;
}

argv[0] ist der Programmname

Das erste Element, argv[0], ist der Name (oder Pfad), mit dem das Programm aufgerufen wurde.

Deshalb ist argc mindestens 1, auch wenn der Benutzer keine zusätzlichen Argumente übergibt.

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("Program name: %s\n", argv[0]);
    return 0;
}

Alle Argumente ausgeben

Sie können von Index 0 bis argc - 1 durchlaufen, um jede Argumentzeichenkette in argv zu verarbeiten.

#include <stdio.h>

int main(int argc, char *argv[]) {
    for (int i = 0; i < argc; i++) {
        printf("argv[%d] = %s\n", i, argv[i]);
    }
    return 0;
}

argv ist nullterminiert

Gemäß dem C-Standard ist garantiert, dass argv[argc] ein NULL-Zeiger ist.

Das bedeutet, dass Sie die Schleife bis zum Erreichen von NULL laufen lassen können, anstatt argc zu verwenden. Üblicher ist jedoch die Zählung mit argc.

#include <stdio.h>

int main(int argc, char *argv[]) {
    char **p = argv;
    while (*p != NULL) {
        printf("%s\n", *p);
        p++;
    }
    return 0;
}

Argumente sind immer Zeichenketten

Jedes Argument kommt als Zeichenkette an, auch Zahlen. Wenn ein Benutzer 42 übergibt, erhalten Sie den Text "42", nicht den Integer-Wert.

Sie müssen ihn selbst mit Funktionen wie atoi oder strtol umwandeln.

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

int main(int argc, char *argv[]) {
    if (argc > 1) {
        int n = atoi(argv[1]);
        printf("Number plus one is %d\n", n + 1);
    } else {
        printf("Pass a number\n");
    }
    return 0;
}

Anzahl der Argumente prüfen

Prüfen Sie immer argc, bevor Sie argv[i] lesen. Der Zugriff auf einen Index außerhalb der übergebenen Argumente führt zu undefiniertem Verhalten.

Eine typische Absicherung prüft, ob genügend Argumente übergeben wurden, und gibt andernfalls eine Verwendungsmeldung aus.

#include <stdio.h>

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

Einen Exit-Code ungleich null verwenden

Wenn die Argumente falsch sind, geben Sie aus main einen Wert ungleich null zurück, um der Shell einen Fehler zu signalisieren.

Konventionell bedeutet 0 Erfolg, jeder andere Wert bedeutet, dass ein Fehler aufgetreten ist.

#include <stdio.h>

int main(int argc, char *argv[]) {
    if (argc != 3) {
        printf("Need exactly 2 arguments\n");
        return 1;
    }
    printf("Got both arguments\n");
    return 0;
}

Numerische Argumente addieren

Ein praktisches Beispiel: Addieren Sie alle in der Befehlszeile übergebenen Zahlen, indem Sie jede mit atoi umwandeln und eine Gesamtsumme bilden.

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

int main(int argc, char *argv[]) {
    int sum = 0;
    for (int i = 1; i < argc; i++) {
        sum += atoi(argv[i]);
    }
    printf("Sum = %d\n", sum);
    return 0;
}

Alternative argv-Notation

Statt char *argv[] sehen Sie möglicherweise char **argv. Als Funktionsparameter bedeuten beide dasselbe: einen Zeiger auf den ersten Zeiger auf eine Zeichenkette.

Mit beiden Schreibweisen können Sie über argv[i] indizieren.

#include <stdio.h>

int main(int argc, char **argv) {
    if (argc > 1)
        printf("First arg: %s\n", argv[1]);
    return 0;
}

Argumente wieder ausgeben

Der klassische Befehl echo gibt seine Argumente einfach aus. Hier sehen Sie eine minimale Version, die sie durch Leerzeichen verbindet.

#include <stdio.h>

int main(int argc, char *argv[]) {
    for (int i = 1; i < argc; i++) {
        printf("%s", argv[i]);
        if (i < argc - 1) printf(" ");
    }
    printf("\n");
    return 0;
}

Schnelltest

Testen Sie Ihr Verständnis von argc und argv.

Zusammenfassung

Sie haben gelernt, wie Programme Eingaben aus der Befehlszeile lesen:

  • main(int argc, char *argv[]) erhält die Anzahl und das Array.
  • argv[0] ist der Programmname; die eigentlichen Argumente beginnen bei Index 1.
  • argv[argc] ist NULL.
  • Argumente sind immer Zeichenketten; wandeln Sie Zahlen mit atoi um und prüfen Sie zuerst argc.

Häufig gestellte Fragen

Ist die Lektion „argc und argv“ kostenlos?

Ja — der vollständige Text von „argc und argv“ 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 „argc und argv“?

Programmargumente lesen 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 1 von 4.

Wie lange dauert die Lektion „argc und argv“?

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