Sprachen / C / IO-Handling

IO-Handling

Stream

Ein essentielles Konzept in C sind Streams, eine Folge (Strom) von Daten-Bytes. Jede Ein- oder Ausgabe wird mit einem Steam realisiert. Streams werden benötigt um externe Informationen (Tastatureingaben, Dateien), also Daten, die nicht auf dem Arbeitsspeicher liegen, auf den Arbeitsspeicher zu transferieren bzw. aus dem Arbeitsspeicher an eine externe Ressource weiterzugeben, so dass die betreffenden Daten auf der Festplatte gespeichert oder dargestellt (Bildschirm, Drucker etc.) werden können.

Streams fließen immer irgendwohin oder kommen irgendwo her. Und genau das ist der große Vorteil von Streams: Das Irgendwo und das Irgendwohin ist für den Programmierer nicht entscheidend, da die Art und Weise der Implementierung von dem Ziel oder der Quelle abstrahiert, also eine Geräteunabhängikeit gewährleistet wird. Ob der Datenstrom auf dem Monitor angezeigt wird oder gedruckt wird oder ob dieser vom User eingegeben wird oder aus einer Datei gelesen wird ändert nichts am Modus Operandi.

Stream/beispiel
#include 

int main(void)
{
  puts("\nTell me your name!");
  char b[99];
  fprintf(stdout,"Hey %sThink parallel.\n",fgets(b,99,stdin));
  return 0;
} 
      

Anmerkung: Der dritte Parameter von fprintf() ist ein String, da fgets() einen String returniert.

stdout und stdin sind spezielle Dateien, die mit Streams verbunden sind. Diese Dateien agieren als Schnittstelle und repräsentieren ein physikalisches Ausgabe- bzw. Eingabegerät. stdout steht für den Bildschirm (Standardausgabe) und stdin (Standardeingabe) für Tastatureingaben des Users. Des weiteren gibt es die Datei stderr (Standardfehlerausgabe), die im Grunde genommen identisch mit stdout ist. Sie wird verwendet, wenn keine normalen Nachrichten, sondern Fehlerausgaben angezeigt werden sollen.

Die Ein- und Ausgabeprogrammierung muss nicht gerätespezifische Attribute berücksichtigen.

Ausgabefunktionen

printf()

printf() wurde bereits in früheren Kapiteln eingesetzt. Sie ermöglicht das Ausgeben von Text auf dem Bildschirm. Ihr werden entweder nur ein Formattext (in Anführungsstrichen) oder ein Text mit Konvertierungsspezifizierern und den entsprechenden Variablen, die sich auf die Konvertierungsspezifizierer beziehen übergeben. Eine Liste der Konvertierungsspezifizierer ist in der Referenz in zu finden.

puts()

puts() ist eine vereinfachte Form von printf(). Es gibt keine Möglichkeit Variablen einzubinden und nach jeder Zeile wird automatisch ein Zeilenumbruch (\n) eingefügt.

Eingabefunktionen

scanf()

Umgangssprachlich ausgedrückt funktioniert scanf() fast wie printf(); nur entgegengesetzt. Der Formatstring besteht jedoch nur aus Konvertierungsspezifizierern und die Variablen (bzw. dessen Adressen), die sich auf diese Konvertierungsspezifizierer beziehen, werden nicht ausgelesen, sondern es wird ihnen ein Wert zugewiesen. Die Funktion dient also dem Einlesen von Werten, die ein User eingegeben hat.

Stream/scanf
#include 

int main()
{
  char zeichen;
  puts("Geben Sie ein Zeichen ein!");
  scanf("%c",&zeichen);
  printf("Sie haben das Zeichen %c eingegeben.\n",zeichen);
  return 0;
} 
      

Der Funktion scanf() werden nicht Variablen, sondern dessen Adressen übergeben (mit Hilfe des Adressoperators).

Autor: behalx
Erstellt am: 23.04.2011
Zuletzt modifiziert: 23.04.2011
Lizenz:
Creative Commons License