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
atoium und prüfen Sie zuerstargc.
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
- argc und argv
- Optionen parsen
- getopt
- Ein CLI-Tool erstellen