ein Kapitel zurück                                           ein Kapitel weiter

Jetzt haben wir schon des öfteren die Funktion printf zur foramtierten Ausgabe verwendet ohne jemals etwas genauer darauf einzugehen. Hier erst mal der Syntax von printf...

#include <stdio.h>

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


Der Rückgabewert von printf ist die Anzahl der Zeichen die Ausgegeben werden, oder bei Fehlerfall -1 (ohne das Terminierungszeichen \0)...

/*Download:printf.c*/
#include <stdio.h>

int main()
{
int zeichen;
zeichen=printf("Hallo Welt ");
printf("enthaelt %d Zeichen\n",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. Hierzu nun eine Grafik...

printf


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

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

Wobei das mit beliebiger Länge nicht ganz Stimmt. Auch mit printf kann es es einen Pufferüberlauf geben, sollte der Text länger sein als erlaubt. Ein Pufferüberlauf (Bufferoverflow) wird in Hackerkreisen gerne verwendet um an root-Rechten zu kommen. Mit mehr wie 65535 Zeichen sollte printf, laut C99-Standard, Probleme bekommen. (bei dem C89 Standard sind es nur 32767 Zeichen) Sollten sie auf Nummer sicher gehen wollen werfen sie mal einen Blick auf snprintf (4.4 BSD only). Wir kommen aber später noch auf diese Thema zurück.

Die Funktion von printf läuft von rechts nach links ab, bei ihrer Ausführung. 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 Typ des Formates angibt. %d steht zum Beispiel für eine Dezimalzahl. Die Formatanweisung läßt sich natürlich noch Erweitert Formatieren.

Bevor ich Ihnen die einzelnen Formatanweisungen und die Erweitereten Formatanweisungen erkläre, möchte ich Ihnen erst mal in den nächsten Kapitel erst mal erklären was für Datentypen uns überhaupt zur Programmieren in C zur Verfügung stehen. Zuvor will ich Ihnen wieder anhand einer Grafik den eben erklärten Ablauf von printf demonstrieren...

printf


Die Ausgabe von printf muss übrigens nicht immer auf dem Bildschirm erfolgen. Man kann die Standardausgabe (stdout) auch in eine Datei Umleiten.

/*Download:printf2.c*/
#include <stdio.h>

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

Übersetzen sie diese Programm wie gewohnt und starten sie es in dem sie in der Konsole folgendes eingeben...

out > /tmp/test.txt

Nun befindet sich in dem Verzeichnis tmp eine Datei Namens test.txt mit dem Inhalt den printf normalerweise auf dem Bildschirm ausgegeben hätte. Natürlich lassen sie damit auch Filterprogramme schreiben.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf