Jetzt haben wir schon des öfteren die Funktion printf zur formatierten Ausgabe verwendet, ohne bisher genauer darauf einzugehen. Zunächst die Syntax von printf:C C++ C/C++ Adressoperator Format ANSI C formatierte ausgabe scanf printf Formatierte Ausgabe mit printf - Formatstring Formatanweisung Kapitel 7: Formatierte Ausgabe mit printf

Jetzt wurde schon des Öfteren die Funktion printf() zur formatierten Ausgabe verwendet, ohne bisher genauer darauf einzugehen.


Zunächst die Syntax von printf():

#include <stdio.h>

int printf(const char *format,...);

Der Rückgabewert von printf() ist die Anzahl der Zeichen, die ausgegeben werden (ohne das Terminierungszeichen '\0'), oder im Fehlerfall EOF. folgendes Beispiel demonstriert dies:

#include <stdio.h>

int main()
{
   int zeichen;
   zeichen=printf("Hallo Welt");
   printf(" enthaelt %d Zeichen\n",zeichen);  //10 Zeichen
   return 0;
}

printf() bekommt mindestens einen Parameter, nämlich den Formatstring. Dieser Formatstring besteht wiederum aus einem Ausgabetext (Stringkonstante), der Nullterminiert ist (\0) und/oder einer Formatanweisung.

Abbildung 7.1: printf() in seine einzelnen Bestandteile zergliedert
Abbildung 7.1: printf() in seine einzelnen Bestandteile zergliedert

Bei dem Formatstring handelt es sich um einer Zeichenkette beliebiger Länge. Zum Beispiel:

printf("Ich bin der Formatstring in der printf-Anweisung"); 

Achtung
 

Wobei das mit der beliebigen Länge nicht ganz stimmt. Auch mit printf() kann es einen Pufferüberlauf geben, sollte der Text länger sein als erlaubt. Ein Pufferüberlauf (Buffer Overflow) wird in Hackerkreisen gerne verwendet, um an root-Rechte (Rechte des System Administrators) zu kommen. Bei mehr als 65535 Zeichen würde printf(), laut C99 Standard, Probleme bekommen (bei dem C89 Standard sind es 32767 Zeichen).

Die Funktion printf() wird bei der Ausführung von rechts nach links abgearbeitet. Dabei sucht die Funktion nach einem Ausgabetext (Stringkonstante) und Formatanweisungen.

Diese Formatanweisung wird von printf() dann mit entsprechenden Parameter der variablen Liste ausgegeben. Formatanweisungen beginnen alle mit einem %-Zeichen. Dahinter folgt ein Buchstabe, der den Datentyp des Formates angibt. %d steht z.B. für eine Dezimalzahl. Die Formatanweisung lässt sich natürlich noch erweitert formatieren. Bevor die einzelnen und erweiterten Formatanweisungen besprochen werden, folgt erst einmal ein Kapitel, welches zeigt, was für Datentypen Sie überhaupt zur Verfügung haben.

Die Ausgabe von printf() muss übrigens nicht ausschließlich auf dem Bildschirm erfolgen. Sie können die Standardausgabe (stdout) auch in eine Datei umleiten.

#include <stdio.h>

int main()
{
   printf("Diese Ausgabe soll in einer Textdatei stehen\n");
   return 0;
}

Übersetzten Sie dieses Programm wie gewohnt und starten es, indem Sie in einer Konsole Folgendes eingeben (als Programmname sei hier "out" gegeben):

out > test.txt 

Jetzt befindet sich im aktuellen Verzeichnis eine Datei Namens "test.txt" mit dem Inhalt, den printf() normalerweise auf dem Bildschirm ausgegeben hätte.

Weiter mit Kapitel 8: Datentypen und Variablen            zum Inhaltsverzeichnis