+ C Formatierte Ausgabe mit printf() BKTM Programmieren leicht gemacht. Formatierte Ausgabe mit printf() Um eine Ausgabe auf dem Bildschirm herzustellen, kann man die printf()funktion benutzen. Diese erzeugt eine formatierte Ausgabe auf dem Bildschirm. Der printf() steht in der Standardbibliothek stdio.h. Die Syntax von printf() sieht folgendermaãÿen aus: int printf(const char *format,...); Die printf()funktion gibt nicht nur etwas auf dem Bildschirm aus, sondern gibt uns auch eine Information darã¼ber, wie viele Zeichen (ohne das Terminierungszeichen '\0') sie ausgegeben hat. Der Rückgabewert von printf() ist also eine IntegerZahl oder im Fehlerfall EOF. Folgendes Beispiel zeigt dies: #include <stdio.h> void main(void) {   int anzahl;   anzahl = printf("hallo Welt");   printf(" enthaelt %d Zeichen\n",anzahl); } Hallo Welt enthaelt 10 Zeichen Wie man aus dem obigen Beispiel erkennen kann, erzeugt printf() keinen automatischen Zeilen umbruch. Wenn man eine Zeile beenden mã chte, fã¼gt man an der entsprechenden Stelle ein \n ein. {mospagebreak title= * Ausgabeinhalte} Inhalte der mã glichen Ausgaben Mit der printf()funktion kann man nun folgende Inhalte formatiert auf dem Bildschim ausgeben: Nur Text:                     printf(â œich bin nur ein Textâ œ); Inhalt einer Variablen:   printf(â œ%dâ œ,anzahl);
Beides:                        printf(â œerst Text %d noch mehr Textâ œ, anzahl);â Bei der Textausgabe ist darauf zu achten, dass der Text eine Là nge von 32767 (Ansi C89 Standard) bzw. 65535 (Ansi C99 Standard) Zeichen nicht überschreitet. Sonst kommt es zu einem Pufferüberlauf. Um den Inhalt einer Variablen auszugeben benã tigt printf(â œ%dâ œ, var) eine Formatspezifikation (siehe auch Variablen / Konstanten / Datentypen), die mit einem %Zeichen beginnt und mit einem Buchstaben endet. Der verwendete Buchstabe ist abhã ngig von dem Datentyp der Variablen, die man ausgeben mã chte (siehe Variablen). Die Formatspezifikation steht im Anführungszeichenbereich von printf() und fungiert hier als Platzhalter fã¼r den tatsã chlichen VariabelenInhalt. Die Variable wird durch ein Komma getrennt dahinter angegeben. Sollen mehrere Variablen ausgeben werden, ist die Reihenfolge der Platzhalter identisch mit der Reihenfolge der Variablen. Beispiel: #include<stdio.h> void main() {   int var1 = 10, var2 = 20, var3   var3 = var1 + var2;   printf(â œ %d + %d = %dâ œ, var1, var2, var3);   }  10 + 20 = 30 {mospagebreak title= * Erweiterung der Formatspezifiktion} Erweiterung der Formatspezifiktion Die Formatspezifikation kann erweitert werden, um die Ausgabe stã rker zu formatieren. Die Ergà nzung stehen dabei direkt nach dem %Zeichen. Falls es sinnvoll ist, kã nnen mehrere Ergà nzungen kombiniert werden. Dabei stehen folgende Ergà nzungen zur Verfügung:
 Ergà nzung Bedeutung  Links bã¼ndig Ausgabe  + Ausgabe des Vorzeichens '+' oder ''  Leerzeichen Ist ein Argument kein Vorzeichen, wird ein Leerzeichen mit ausgegeben.  0 Bei numerischer Ausgabe wird mit Nullen bis zur angegebenen Weite aufgefã¼llt.  # Bei o bzw. x oder X wird mit vorangestellter 0 bzw. 0x ausgegeben. Bei e, E oder f wird der Wert mit einem Dezimalpunkt ausgegeben, auch wenn keine Nachkommastelle existiert.  Weite  n Es werden mindestens n Stellen ausgegeben, auch wenn der Wert weniger als n Stellen besitzt.  * Wert des nã chsten Arguments (ganzzahlig) legt die Weite fest. Bei negativem Wert wird linksbã¼ndig justiert.  Genauigkeit Â.n Anzahl der Nachkommstellen der formatierten Ausgabe. Der genauen Schreibweise geht ein Punkt voran: Beispiel: #include <stdio.h> void main(void) {   int i=10;   printf("%5d\n",i);   printf("%*d\n",i,i);   printf("%2d\n",100);
  printf("%4d\n",100);   printf("%.2f\n",3.143234);   printf("%.2d\n",1000);   char text[]="tiefstand";   printf(" 01234567890123456789 \n");   printf(" %s \n",text);   printf(" %20s \n",text);   printf(" %20s \n",text);   printf(" %20s \n",text+4);   printf(" %20.4s \n",text);   printf(" %20.4s \n",text);   printf(" %20s \n",text+4);   }   10         10 100  100 3.14 1000 01234567890123456789 Tiefstand           Tiefstand Tiefstand                        stand                Tief Tief               standâ              Â
Falls man eine nicht vorhandene oder zu kleine Weitenangabe vornimmt, bewirkt dies nicht, dass die Zahlen beschnitten werden bzw. mehr Zeichen enthalten. Durch printf("%.2f\n",3.143234);â wirdâ die Gleitpunktzahl "3.143234" als "3.14" ausgegeben. Dadurch wird derâ Wert der Zahl nicht verã ndert, sondern dies bezieht sich nur auf die formatierte Ausgabe. Die Zahl weder auf oder noch abgerundet. So bewirkt z.b. die Ausgabe vonâ printf("%.2d\n",1000);â nicht, dass 10 ausgegeben wird. In diesem Fall wird dennoch die Zahl 1000 ausgegeben. Hingegen wird bei Strings dieser Bereich beschnitten.