Dies ist eine alte Version des Dokuments!


Parameterübergabe an die main-Funktion

Kommandozeilenparameter

Kommandozeilenparameter sind ein oft gesehener Weg um einem Programm Werte zu übergeben. Doch wie kann man so etwas in C realisieren? Da der Eintrittspunkt in unser Programm immer die main-Funktion ist, ist es auch nicht weiter verwunderlich, dass wir auch an dieser Stelle die in der Kommandozeile eingegebenen Werte erhalten können. Damit das funktioniert müssen wir eine spezielle Definition für die main-Funktion verwenden, die Variablen bereitstellt in die die Kommandozeilenargumente gespeichert werden.

Einen neue main-Funktion

Die neue main-Funktion soll zwei Parameter erwarten. Der erste ist ein Integer, in den die Anzahl der übergebenen Argumente geschrieben wird, wobei die Grenze zwischen zwei Argumenten immer ein Whitespace ist. Der zweite Parameter enthält schließlich ein Array von Char-Zeigern, die auf die Werte der übergebenen Argumente zeigen. Es ist üblich die Parameter mit 'argc' (=argument count) für die Anzahl der Argumente und 'argv' (=argument values) für die Werte der Argumente zu bezeichen. Die beiden am häufigsten verwendeten Definitionen der main-Funktion schauen deshalb auch so aus:

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

Wie man sieht ist es auch völlig egal ob man für die Werte der Argumente einen Doppelzeiger oder ein Array von Zeigern verwendet, da diese in C/C++ beinahe gleich behandelt werden. Eventuell ist für den einen oder anderen die zweite Variant etwas intuitiver, da man auf den ersten Blick erkennen kann, dass es sich um ein Array handelt.

Ein erstes Programm

So, jetzt können wir ein erstes Programm mit der neuen main-Funktion schreiben und geben den Wert der Variablen 'argc', also die Anzahl der übergebenen Argumente aus:

#include <stdio.h>
 
int main( int argc, char* argv[] )
{
  printf("Anzahl der Argumente: %d", argc);
 
  return 0;
}

Wenn wir dieses Programm jetzt kompilieren und ausführen werden wir feststellen, dass wir bereits ein Argument erhalten obwohl wir keines angegeben haben. Das liegt daran, dass uns das Betriebssystem immer als erstes Argument den Namen des ausgeführten Programmes mit der gesamten Pfadangabe übergibt. Jet


Autorendiskussion