printf

Mit printf() kann eine Kette von Zeichen formatiert ausgegeben werden. Formatierte Ausgabe bedeutet, dass nicht nur ein reiner Text ausgegeben werden kann. Über Steuerzeichen, sogenannte Formatbezeichner, kann der auszugebende Text formatiert werden. Der Zeichen die Ausgegeben werden sollen heißen Stringkonstante und werden immer in Anführungszeichen geschrieben.

Um Variablen ausgeben zu können benötigt man einen Formatbezeichner und eine Variablenliste.

Beispiel:

int variable = 123;
printf("Das ist der Formatstring %d", variable);

%d ist der Formatbezeichner
variable ist die Variablenliste (Auch wenn hier im Moment nur eine Variable steht.)
Es gibt verschiedene Formatbezeichner. So muss man nicht zwingend jede Variable mit einem Cast wandeln um sie auszugeben.

Ganzzahlen ausgeben mit printf

Formatbezeichner für Ganzzahlen

Typangabe Bedeutung
c char oder int (0 bis 255) Dient hauptsächlich der Ausgabe einzelner Zeichen
d Der Datentyp int wird als vorzeichenbehaftete Dezimalzahl ausgegeben.
ld Der Datentyp long wird als vorzeichenbehaftete Dezimalzahl ausgegeben.
u Der Datentyp unsigned int wird als vorzeichenlose Dezimalzahl ausgegeben.
lu Der Datentyp unsigned long wird als vorzeichenlose Dezimalzahl ausgegeben.
o Die Datentypen int und unsigned int werden als vorzeichenlose Oktalzahl ausgegeben.
x Die Datentypen int und unsigned int werden als vorzeichenlose Hexadezimalzahl ausgegeben.
lx Die Datentypen long und unsigned long werden als vorzeichenlose Hexadezimalzahl ausgegeben.


Das folgende Programm soll eine kleine Übung zur Ausgabe mit printf darstellen. Auch wenn die Ausgabe der Variablen in verschiedenen Formaten geschieht, wird die Variable selbst nicht verändert. Die Variable wird also nur für die Ausgabe umgewandelt. Im Programm selbst bleibt die Variable unberührt und kann normal weiter verarbeitet werden.

Hier der Code zur Ausgabe von konvertierten Zahlen.:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

/* Beispiel zur Konvertierung von ganzen Zahlen. */
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int wert;

/* Eingabe der ganz Zahl */
printf("Dieses Programm Konvertiert ganze Zahlen in verschiedene Darstellungen.\n");
printf("Bitte geben sie eine Zahl ein: ");
scanf("%d",&wert);

/* Konvertierung der Zahl in verschiedene Darstellungen. */
printf("Dezimale Darstellung : %d\n", wert);
printf("Oktale Darstellung : %o\n", wert);
printf("Hexadezimal Darstellung : %x\n", wert);
printf("ASCII Darstellung : %c\n", wert);

system("PAUSE");
return 0;
}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Fließkommazahlen ausgeben mit printf

Formatbezeichner für Fließkommazahlen

Typangabe Bedeutung
f float oder double werden mit f ausgegeben
e, E float oder double werden im Exponentialformat ausgegeben. Der Unterschied zwischen e und E ist einfach die Groß- und Kleinschreibung des Exponentialzeichen.
g, G Die Datentypen float und double werden kompakter ausgegeben. Die Werte werden außerdem im Festkommaformat oder im Exponentialformat ausgegeben. Der Unterschied zwischen g und G ist wieder die Groß- und Kleinschreibung des Exponentialzeichen.
lf, le oder lg Das vorangestellte "l" zeigt printf das sich um den Datentyp long double handelt.
Selbstverständlich kann auch hier wieder E oder G eingesetzt werden.



Die Feldbreite (also die Größe des ausgegebenen Feldes) kann mit printf auch beeinflusst werden.
Beispiel:
printf("Ueberweisen Sie bitte %10d Euro\n", summe);

Dieses kleine Beispiel zeigt, wie man vor der eigentlichen Ausgabe 10 Leerzeichen einfügen kann. So werden alle Zahlen rechtsbündig geschrieben.

Diese Art der Ausgabe funktioniert auch noch mit führenden Nullen. Zu diesem Zweck muss eine Null hinter das Prozentzeichen geschrieben werden.
Beispiel:
printf("Ueberweisen Sie bitte %010d Euro\n", summe);

Soll anstatt rechtsbündig linksbündig ausgegeben werden, kann man hinter das Prozentzeichen ein Minuszeichen (%-10d) setzen.

Es ist allerdings nicht möglich, andere Füllzeichen als das Leerzeichen oder die Null zu verwenden.


Bei Fließkommazahlen kann man noch die Nachkommastellen bestimmen. Da für wird wieder hinter das Prozentzeichen geschrieben. Wenn ich zum Beispiel 4 Stellen nach dem Komma ausgeben möchte, sieht das so aus:
Beispiel:
printf("Ueberweisen Sie bitte %.4d Euro\n", summe);

Noch eine weitere Besonderheit muss Erwähnung finden. Will man ein Prozentzeichen ausgeben, muss man dieses doppelt eingeben. Da das Prozentzeichen ja eigentlich, als Einleitungszeichen, für die Ausgabe selbst benötigt wird
Beispiel:
printf("Die MwSt betraegt %d %%\n", mwst);

Hier folgt nun ein Programm welches alle Ausgeben von Fließkommazahlen beinhaltet.:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
float wert;

/* Eingabe der Fließkommazahl */
printf("Bitte geben Sie eine Fliesskommazahl ein.\nBitte beachten Sie das der Punkt als Trennzeichen dient.\n");
scanf("%f" ,&wert);
printf("\n");
/* Nun beginnt die Ausgabe */
printf("Der eingegebene Wert ist: %f\n", wert);

/* Ausgabe mit Expoentialfunktion */
printf("Der eingegebene Wert mit Expoentialfunktion: %e\n", wert);

/* Nun die kompakte Form. */
printf("Der eingegebene Wert in kompakter Form: %g\n", wert);

/* Nun werden wir die Ausgabe noch recht- bzw linksbündig verschieben. */
printf("\n");
printf("(Rechtsbuendig) --|%10f|--\n", wert);
printf("(Rechtsbuendig)--|%10e|--\n", wert);
printf("(Rechtsbuendig) --|%10g--|\n", wert);
printf("\n");
printf("(Linksbuendig) --|%-10f|--\n", wert);
printf("(Linksbuendig) --|%-10e|--\n", wert);
printf("(Linksbuendig) --|%-10g|--\n", wert);
printf("\n");
/* Zusätzliche Ausgeben des heute gelehrnten */
printf("(4 Stellen nach dem Komma) --|%.4f|--\n", wert);
printf("\n");
printf("(Ausgabe mit Prozentzeichen) --|%.2f%%|--\n", wert);

system("PAUSE");
return 0;
}


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -