14.1 Programmargumente

Die Funktion main(), die in C die Rolle des Hauptprogramms in anderen Sprachen spielt, hat zwei Parameter und gibt einen Wert vom Typ int zurück.

Der Rückgabewert signalisiert der aufrufenden Umgebung, ob der Programmlauf erfolgreich war. Ein Wert von 0 wird in aller Regel zurückgegeben, wenn alles halbwegs gut ging; eine 1 signalisiert: ,,Na ja, gerade eben noch`` und Werte ab 2 bedeuten, daß das eigentliche Ziel des Programms nicht erreicht werden konnte. Was mit dem Rückgabewert genau passiert, legt der Standard nicht fest.

Die Parameter, mit denen main() aufgerufen wird, sind aus der Kommandozeile aufbereitet, mit der das Programm aufgerufen wird. Wenn die Kommandozeile nicht benötigt wird, dann kann man die beiden Parameter getrost weglassen.

Der erste der beiden Parameter ist vom Typ int und gibt die Anzahl der Strings an, auf die der zweite Parameter zeigt. Der zweite Parameter ist vom Typ char ** beziehungsweise char *[]. Er zeigt auf ein Feld, in dem wiederum Zeiger auf Strings hinterlegt sind. Die Anzahl der hinterlegten Strings und damit die Anzahl der Zeiger in dem Feld sind im ersten Parameter enthalten. Der erste Parameter ist immer mindestens 1, da der erste Zeiger im Feld auf den Namen des aufgerufenen Programms zeigen soll. Dies ist aber oft nur unter Unix der Fall. Bei den meisten anderen Systemen ist der erste String leer und enthält nur die abschließende Null.

Ab dem zweiten String stehen dann die Worte aus der Kommandozeile, mit der das Programm aufgerufen wurde.

Folgendes Programm pamain.c gibt seine Parameter auf dem Bildschirm aus:

/* Time-stamp: "03.10.02 08:14 pamain.c klaus@wachtler.de"
 *
 * Ausgabe aller Programmargumente
 */

main( int n, char **s )
{
  /* Schleifenzaehler vereinbaren:
   */
  int     i;

  /* Schleife von i=0 bis (n-1) in Einerschritten:
   */
  for( i=0; i<n; i++ )
  {
    /* Ausgeben von i und dem i-ten String der
     * Kommandozeile:
     */
    printf( "Der %d. Parameter ist [%s]\n", i, s[i] );
  }
}

Wird es mit der Kommandozeile

abc defg
aufgerufen, dann gibt es folgendes aus:
Der 0. Parameter ist [pamain]
Der 1. Parameter ist [abc]
Der 2. Parameter ist [defg]

Die erste Zeile kann je nach dem verwendeten System auch anders aussehen.

AnyWare@Wachtler.de