PI4 Logo

Übung Praktische Informatik I (Hinweise zu Blatt 13)

Kompilieren und Ausführen von C-Programmen

Zunächst ein kleines Beispielprogramm helloworld.c:

#include <stdio.h> /* stdio = Standard Input/Output: Funktionen */
                   /* fuer die Ein- und Ausgabe (Bildschirm, Datei) */
int main () {
  printf ("Hello world\n");
  return 0;
}

Kompilieren - Es wird standardmäßig eine ausführbare Datei names a.out erzeugt:

gcc helloworld.c

Ausführen - Führt zu der Ausgabe Hello world:

./a.out

Kommandozeilenparameter in C

An das Hauptprogramm werden die beiden Parameter int argc und char* argv[] übergeben. Ersterer enthält die Anzahl der Kommandozeilenparameter, letzterer die Parameter der Eingabezeile. So führt z.B. der Aufruf ./a.out test 12 zu folgender Belegung: argc = 3, argv[0] = "./a.out", argv[1] = "test" und argv[2] = "12".

Abschließend noch ein Beispielprogramm:

/*
  Auslesen aller Kommandozeilenparameter und
  Ausgabe auf dem Bildschirm
*/
#include <stdio.h>

int main (int argc,      /* Anzahl der Argumente */
          char* argv[])  /* argv ist ein Feld von Zeigern auf Zeichenketten */

{
  int i; /* Schleifenvariable */

  for (i = 0; i < argc; i++) {
    printf ("%s\n", argv[i]); /* "%s" bedeutet: hier wird eine Zeichenkette */
                              /* ausgegeben. "\n" steht fuer das Zeilenende */
  return 0;
}

Öffnen und Schließen von Dateien

#include <stdio.h>
#include <stdlib.h> /* stdlib = Standard Library */

int main (int argc, char* argv[])
{
  FILE* inputFile;  /* File pointer anlegen */

  inputFile = fopen (argv[1], "r"); /* Datei mit dem im ersten */
                                    /* Kommandozeilenparameter angegebenen Namen oeffnen */
                                    /* "r" heisst, wir wollen nur lesen */
  if (inputFile == NULL) {          /* hat fopen geklappt ? */
     printf ("Datei %s nicht gefunden\n", argv[1]); /* nein => Fehlermeldung ausgeben*/
     exit (1);                      /* und abbrechen, Rueckgabewert >0 an das Betriebssystem */
                                   /* (exit stammt aus stdlib.h) */
  }

  .... /* beliebige Dateioperationen */

  fclose (inputFile); /* Datei schliessen */
}

Gerald Kühne <kuehne@informatik.uni-mannheim.de>
Last modified: Wed Feb 2 11:38:24 MET 2000