Linux C Programmierung Tutorial Teil 22 – Zugriff auf Befehlszeilenargumente im C-Programm

Im vorherigen Tutorial haben wir mehrere Konzepte im Zusammenhang mit Zeigern in der Programmiersprache C diskutiert. Eines der Konzepte, die wir besprochen haben, war eine Reihe von Hinweisen. Wir haben das Beispiel eines Integer-Pointer-Arrays verwendet, um das Konzept zu demonstrieren.

Wie man innerhalb eines C-Programms auf Kommandozeilenargumente zugreift

Aber wie in diesem Tutorial erwähnt, kann eine Reihe von Zeigern von verschiedenen Typen sein. Zum Beispiel gibt es hier eine Reihe von Zeichenzeigern:

char *arr[] = {"HowtoForge", "FaqForge", "Linux"};

Und hier ist ein kleines Programm, das zeigt, wie dieses Array verwendet werden kann:

#include <stdio.h>

int main()
{
char *arr[] = {„HowtoForge“, „FaqForge“, „Linux“};

printf(„\n %s“, *arr);
printf(„\n %s“, *(arr+1));
printf(„\n %s“, *(arr+2));

return 0;
}

arr‘ ist die Adresse des ersten Elements dieses Arrays. Nun, da dies ein Array von Pointer ist, ist das erste Element (und alle anderen Elemente, auf die durch Hinzufügen von 1 und 2 zu arr zugegriffen wird) nichts anderes als eine Adresse. Um also auf den Wert zuzugreifen, der diese Adresse beibehalten hat, verwenden wir den Operator *.

Es folgt die Ausgabe dieses Programms:

HowtoForge 
FaqForge 
Linux

So greifen Sie also auf Werte aus einem Array von Zeichenzeigern zu. Nun, du musst nachdenken, warum wir das alles besprochen haben?

Nun, wir haben es getan, weil wir damit zu einem weiteren wichtigen Konzept kommen, nämlich der Möglichkeit, auf Befehlszeilenargumente in Umgebungen zuzugreifen, die die Programmiersprache C unterstützen. Lassen Sie uns das im Detail besprechen.

Wie Sie inzwischen wissen sollten, ist ‚main‘ die erste Funktion in Ihrem Programm, die beim Ausführen des Programms aufgerufen wird. Es wird mit zwei Argumenten aufgerufen: argc und argv. Während der erste Teil Ihnen über die Anzahl der Befehlszeilenargumente Auskunft gibt, ist der zweite Teil eigentlich ein Array von Zeigern auf die Argumente selbst.

Bitte beachten Sie, dass der Name des Programms selbst als Argument an die Hauptfunktion übergeben wird. Aus diesem Grund ist die Anzahl der Argumente – dargestellt durch argc – um eins höher als die tatsächliche Anzahl der an das Programm übergebenen Argumente. Nachfolgend ein Beispiel:

#include <stdio.h>

int main(int argc, char *argv[])
{
printf(„\n %d“, argc);
printf(„\n %s“, *argv);

return 0;
}

Nun haben wir dieses Programm – a.out genannt, und im ‚home‘ Verzeichnis unseres Systems vorhanden – ohne Argumente ausgeführt. Und hier ist die Ausgabe:

 1 
 /home/a.out

So können Sie sehen, dass der Ausführungsname des Programms als Argument übergeben wurde. Hätte ich den folgenden Befehl verwendet:

/home/a.out htf ff

Dann wäre argc in diesem Fall 3 gewesen und argv hätte Adressen von Zeichenketten ‚/home/a.out‘, ‚htf‘ und ‚ff‘ enthalten.

Hier ist eine bessere Möglichkeit, das Argumente-Druckprogramm zu schreiben:

#include <stdio.h>

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

return 0;
}

Es ist wichtig, sich daran zu erinnern, dass die Argumente im Array in der gleichen Reihenfolge gespeichert werden, in der sie auf der Kommandozeile übergeben werden.

Fazit

Sie werden wahrscheinlich auf mehrere Situationen stoßen, in denen Sie sich mit Befehlszeilenargumenten in Ihrem C-Code auseinandersetzen müssen. Was wir hier besprochen haben, sollte für Sie eine Grundlage bilden. Probieren Sie einige Programme an Ihrer Seite aus, um eine bessere Vorstellung davon zu erhalten, wie auf Befehlszeilenargumente innerhalb eines C-Programms zugegriffen wird.

Das könnte Dich auch interessieren …