Lektion 7 - Programmparameter und Dateien

Programmparameter

Bisher haben wir unsere main immer wie folgt deklariert:

int main();

Tatsächlich ist die main ein Spezialfall, da man diese ohne Parameter aufrufen kann, obwohl die tatsächliche Signatur eigentlich wäre

int main(int argc, char** argv);

(eine weitere Ausnahme bei der main ist auch, dass diese nicht unbedingt einen Wert zurückgeben muss)

Mit diesen Parametern können wir auf Argumente zugreifen, die beim Programmaufruf mitgegeben wurden. Dabei ist argc die Anzahl an Argumenten (inklusive Programmname) und argv ein Array von Strings (deswegen der doppelte Pointer)

Angenommen, wir rufen ein Programm so auf:

./hello Max

Dann wäre argc 2, argv[0] ./hello und argv[1] Max.

Ein mögliches Programm, mit dem wir beliebige Nutzer begrüßen können, könnte dann so aussehen:

#include <stdio.h>

int main(int argc, char** argv) {

  // handle wrong usage
  if(argc != 2) {
    printf("Wrong usage of %s.\n", argv[0]);
    return;
  }

  printf("Hello %s!\n", argv[1]);
}

Dateien

Da unsere Programme im Arbeitsspeicher ausgeführt werden, haben wir bisher keine Möglichkeit, unsere Daten, Ergebnisse oder was auch immer unser Programm bearbeiten könnte, irgendwie permanent zu Speicher.

stdio.h liefert uns Funktionen zum Umgang mit Dateien (die auf der Festplatte liegen, und somit persistent gespeichert werden). Es gibt viele solcher Funktionen, und du musst sie auf keinen Fall alle im Hinterkopf behalten. Für alles, was du brauchen könntest, wird es ein Stack-Overflow-Beispiel geben, was dir weiterhilft.

Falls du ein besseres Verständnis für den Umgang mit Dateien in C haben möchtest, könnte dies nützlich sein.

Praktische Übung: Dateien werden oft in Kombination mit Programmparametern verwendet, um unserem Programm Eingabedaten zu übergeben. Betrachte die Übung aus Lektion 4. Schreibe oder passe dein Programm so an, dass es seine Eingabedaten aus einer Eingabedatei mit beliebigem Namen erhält.

input7.csv