Wie lese ich Befehlszeilenargumente in C? (argc, argv-Tutorial)
Die Hauptfunktion in C empfängt Befehlszeilenparameter über argc und argv: argc ist die Anzahl der Parameter (mindestens 1, einschließlich des Programmnamens), argv ist ein Array von Zeigern, die auf jede Parameterzeichenfolge zeigen, argv[argc] ist ein Nullzeiger und argc muss vor dem Zugriff überprüft werden, um außerhalb der Grenzen zu verhindern.

In C werden Befehlszeilenargumente über zwei Parameter an die main übergeben: argc (Argument Count) und argv (Argument Vector). argc ist eine Ganzzahl, die angibt, wie viele Argumente einschließlich des Programmnamens angegeben wurden. argv ist ein Array von Zeichenfolgen im C-Stil ( char* ), die auf jedes Argument verweisen.
argc und argv verstehen
argc ist immer mindestens 1 – weil argv[0] den Namen oder Pfad des Programms (wie aufgerufen) enthält. Jedes nachfolgende Element ( argv[1] , argv[2] usw.) entspricht den Argumenten, die nach dem Programmnamen eingegeben werden. Das Array endet mit einem Nullzeiger ( argv[argc] == nullptr ), sodass eine Schleife von 0 bis argc - 1 sicher ist.
-
./myapp hello world→argc = 3,argv[0] = "./myapp",argv[1] = "hello",argv[2] = "world" -
./myapp -v --input=file.txt→argc = 4; Kein automatisches Parsen – Sie kümmern sich um die Aufteilung und Bedeutung
Grundlegende Zugangs- und Sicherheitskontrollen
Überprüfen Sie immer argc bevor Sie auf argv[i] zugreifen, um undefiniertes Verhalten zu vermeiden. Wenn Ihr Programm beispielsweise mindestens ein vom Benutzer bereitgestelltes Argument erwartet, überprüfen Sie argc > 1 .
- Verwenden Sie
if (argc \n"; return 1; } - Konvertieren Sie
argv[i]zur einfacheren Manipulation instd::string:std::string arg(argv[1]); - Denken Sie daran:
argvElemente sind nullterminierte C-Strings – sie können sicher an C-Bibliotheksfunktionen wiestrcmpoderatoiübergeben werden, bevorzugen jedoch nach Möglichkeit C-Alternativen (std::stoi,std::string::compare).
Einfaches Parsingmuster für Argumente
Für die grundlegende Flag-basierte Verwendung (z. B. -h , --help , -o output.txt ) durchlaufen Sie argv beginnend bei Index 1 und überprüfen jede Zeichenfolge:
- Überprüfen Sie
argv[i][0] == '-', um Flags zu erkennen - Behandeln Sie kurze Optionen wie
-v(argv[i][1] == 'v') und lange Optionen wie--verbosemitstd::string(argv[i]).compare("--verbose") == 0 - Wenn ein Flag einen Wert erwartet (z. B.
-o file.txt), stellen Sie sicher, dassi 1 bevor Sie <code>argv[i 1]lesen.
Moderne Alternativen (C 17 und höher)
Während argc/argv Standard bleibt, sollten Sie aus Gründen der Übersichtlichkeit und Sicherheit erwägen, sie zu verpacken:
- Erstellen Sie einen
std::vector<:string></:string>vonargv:std::vector<:string> args(argv, argv argc);</:string> - Verwenden Sie Bibliotheken wie Poco , argparse oder argh für robustes, deklaratives Parsen
- In einfachen Fällen sind strukturierte Schleifen mit bereichsbasiertem
forüber einen Vektor besser lesbar als rohe Zeigerarithmetik
Das obige ist der detaillierte Inhalt vonWie lese ich Befehlszeilenargumente in C? (argc, argv-Tutorial). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Heiße KI -Werkzeuge
Undress AI Tool
Ausziehbilder kostenlos
AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.
Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos
Stock Market GPT
KI-gestützte Anlageforschung für intelligentere Entscheidungen
Heißer Artikel
Beliebtes Werkzeug
Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor
SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen
Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung
Dreamweaver CS6
Visuelle Webentwicklungstools
SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)




