Das Analysieren von Befehlszeilenargumenten in C

CCBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Projekt lernst du, wie du Befehlszeilenargumente in einem C-Programm analysieren und verarbeiten kannst. Dies ist eine grundlegende Fähigkeit in der Softwareentwicklung, da viele Programme Befehlszeilenargumente akzeptieren und verarbeiten, um ihr Verhalten anzupassen.

👀 Vorschau

$ gcc cmd.c -o cmd
$./cmd --arg1 1 --arg2 demo --arg9 labex
arg1:1
arg2:demo
arg9:labex

🎯 Aufgaben

In diesem Projekt wirst du lernen:

  • Wie du eine C-Datei erstellen und die grundlegende Struktur eines C-Programms schreiben kannst
  • Wie du Befehlszeilenargumente analysieren und Parameter-Namen und -Werte extrahieren kannst
  • Wie du die Parameter-Namen und -Werte im erforderlichen Format ausgeben kannst

🏆 Errungenschaften

Nach Abschluss dieses Projekts wirst du in der Lage sein:

  • Den Begriff von Befehlszeilenargumenten zu verstehen und wie du sie in einem C-Programm verwendest
  • Ein Programm zu implementieren, das Befehlszeilenargumente analysieren und verarbeiten kann
  • Dein Wissen um die C-Programmierung anzuwenden, um ein praktikables Problem zu lösen

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/CompoundTypesGroup(["Compound Types"]) c(("C")) -.-> c/FunctionsGroup(["Functions"]) c(("C")) -.-> c/FileHandlingGroup(["File Handling"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c/ControlFlowGroup -.-> c/if_else("If...Else") c/ControlFlowGroup -.-> c/for_loop("For Loop") c/CompoundTypesGroup -.-> c/strings("Strings") c/FunctionsGroup -.-> c/function_declaration("Function Declaration") c/FunctionsGroup -.-> c/function_parameters("Function Parameters") c/FileHandlingGroup -.-> c/create_files("Create Files") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/if_else -.-> lab-301497{{"Das Analysieren von Befehlszeilenargumenten in C"}} c/for_loop -.-> lab-301497{{"Das Analysieren von Befehlszeilenargumenten in C"}} c/strings -.-> lab-301497{{"Das Analysieren von Befehlszeilenargumenten in C"}} c/function_declaration -.-> lab-301497{{"Das Analysieren von Befehlszeilenargumenten in C"}} c/function_parameters -.-> lab-301497{{"Das Analysieren von Befehlszeilenargumenten in C"}} c/create_files -.-> lab-301497{{"Das Analysieren von Befehlszeilenargumenten in C"}} c/user_input -.-> lab-301497{{"Das Analysieren von Befehlszeilenargumenten in C"}} c/output -.-> lab-301497{{"Das Analysieren von Befehlszeilenargumenten in C"}} end

Erstellen Sie die C-Datei

In diesem Schritt erstellen Sie die C-Datei für das Befehlszeilenargumente-Programm.

  1. Öffnen Sie ein Terminal und navigieren Sie zum Projektverzeichnis:
cd ~/project
  1. Erstellen Sie in dem Projektverzeichnis eine neue C-Datei namens cmd.c:
touch cmd.c
  1. Öffnen Sie die Datei cmd.c in einem Texteditor und fügen Sie den folgenden Code hinzu:
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]) {
    // Ihr Code wird hier stehen
    return 0;
}

Dies ist die grundlegende Struktur des C-Programms, das die Befehlszeilenargumente verarbeiten wird.

Implementieren Sie die Analyse von Befehlszeilenargumenten

In diesem Schritt implementieren Sie die Logik, um die Befehlszeilenargumente zu analysieren und die Parameter-Namen und -Werte auszugeben.

  1. Fügen Sie in der main()-Funktion eine Schleife hinzu, um durch die Befehlszeilenargumente zu iterieren:
for (int i = 1; i < argc; i++) {
    // Ihr Code wird hier stehen
}

Die Schleife beginnt bei Index 1, da argv[0] den Programmnamen enthält.

  1. Innerhalb der Schleife überprüfen Sie, ob das aktuelle Argument mit -- beginnt:
if (strncmp(argv[i], "--", 2) == 0) {
    // Das Argument ist ein Parameter
    char *param = argv[i] + 2; // Entfernen Sie das führende "--"
    char *value = NULL;

    // Überprüfen Sie, ob nach dem Parameter ein Wert vorhanden ist
    if (i + 1 < argc && strncmp(argv[i + 1], "--", 2)!= 0) {
        value = argv[i + 1];
        i++; // Überspringen Sie das Wertargument
    }

    printf("%s:%s\n", param, value);
}

Dieser Code extrahiert den Parameter-Namen und -Wert aus den Befehlszeilenargumenten und gibt sie im erforderlichen Format aus.

  1. Der endgültige Code lautet wie folgt:
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]) {
    for (int i = 1; i < argc; i++) {
        if (strncmp(argv[i], "--", 2) == 0) {
            char *param = argv[i] + 2; // Entfernen Sie das führende "--"
            char *value = NULL;

            // Überprüfen Sie, ob nach dem Parameter ein Wert vorhanden ist
            if (i + 1 < argc && strncmp(argv[i + 1], "--", 2)!= 0) {
                value = argv[i + 1];
                i++; // Überspringen Sie das Wertargument
            }

            printf("%s:%s\n", param, value);
        }
    }

    return 0;
}
  1. Speichern Sie die Datei cmd.c.

Kompilieren und Ausführen des Programms

In diesem Schritt werden Sie das C-Programm kompilieren und es mit einigen Beispiel-Befehlszeilenargumenten ausführen.

  1. Kompilieren Sie die Datei cmd.c:
gcc cmd.c -o cmd

Dies erstellt eine ausführbare Datei namens cmd.

  1. Führen Sie das Programm mit einigen Beispiel-Befehlszeilenargumenten aus:
./cmd --arg1 1 --arg2 demo --arg9 labex

Sie sollten die folgende Ausgabe sehen:

arg1:1
arg2:demo
arg9:labex
  1. Versuchen Sie, das Programm mit einigen doppelten Parametern auszuführen:
./cmd --testarg1 1 --testarg2 demo --testarg1 labex

Sie sollten die folgende Ausgabe sehen:

testarg1:1
testarg2:demo
testarg1:labex

Herzlichen Glückwunsch! Sie haben das Befehlszeilenargument-Analyse-Programm erfolgreich implementiert.

✨ Lösung prüfen und üben

Zusammenfassung

Herzlichen Glückwunsch! Sie haben dieses Projekt abgeschlossen. Sie können in LabEx weitere Übungen absolvieren, um Ihre Fähigkeiten zu verbessern.