C für Dummies. Dan GookinЧитать онлайн книгу.
Sie können! Falls es sich fehlerfrei kompilieren ließe – falls –, würden Sie folgende Ausgabe sehen:
Name eines Idioten:
Karl Klammer
Yep, ich denke auch, dass %s ein Idiot ist.
Tja, wer ist dieser %s
eigentlich?
Aber zum Glück wird Ihr Compiler wahrscheinlich aufgesprungen sein und hat Ihnen einen Fehler an den Kopf geworfen, der besagt, dass puts
nur ein Argument hat und kein weiteres mehr verkraftet. Genauer, dass das idiot
in puts
zu viel ist. puts
ist nicht nur einfacher gestrickt als printf
, das %s
funktioniert nicht; es kann auch mit angehängten Variablen nichts anfangen.
Wann nimmt man puts und wann printf?
Nehmen Sie puts
, wenn Sie einfach eine Zeile mit Text ausgeben wollen.
Nehmen Sie puts
, wenn Sie den Inhalt einer Stringvariablen in einer eigenen Zeile ausgeben wollen.
Verwenden Sie printf
, wenn Sie den Inhalt einer Stringvariablen in einen anderen String einbetten wollen und das Ergebnis ausgegeben werden soll.
Verwenden Sie printf
, wenn Sie mit mehr als einer Variablen gleichzeitig arbeiten wollen.
Nehmen Sie printf
, wenn Sie der zusätzliche Zeilenwechsel \n
am Ende der Ausgabe stört, zum Beispiel dann, wenn Sie nach einer Eingabe fragen.
Nehmen Sie printf
, wenn Sie spezielle Formatierungen der Ausgabe brauchen.
Statt einfach nur das printf
durch puts
zu ersetzen, muss man sein Programm überdenken. Zum einen gibt es da das zusätzliche \n
, womit nach jedem puts
eine neue Zeile begonnen wird. Zum anderen die fehlende Möglichkeit, Stringvariablen in andere Strings einzubauen.
Ändern Sie das Programm nun, wie Sie es hier sehen, kompilieren Sie es – es funktioniert nun – und starten Sie es.
#include <stdio.h>
int main()
{
char idiot[20];
puts("Name eines Idioten:");
fgets(idiot, 20, stdin);
puts("Yep, ich denke auch, dass");
puts(idiot);
puts("ein Idiot ist.\n");
return 0;
}
Listing 3.11: Name: Insult2.c
Die Ausgabe sieht ein wenig seltsam aus, ein bisschen wie einer dieser Kettenbriefe. Aber das Programm funktioniert wie beabsichtigt:
Name eines Idioten:
Karl Klammer
Yep, ich denke auch, dass
Karl Klammer
ein Idiot ist
Mehr Spaß mit printf
Dieses Kapitel hat damit begonnen, Ihnen zu zeigen, wie Sie die printf
-Funktion in Ihren Programmen einsetzen können. Dieser Abschnitt liefert einige Informationen über die Arbeitsweise dieser mächtigen Funktion sowie einen Ausblick auf einige noch kommende Dinge.
Die folgenden drei Tricks sollten Ihnen bereits geläufig sein:
printf gibt den Text aus, den Sie in Anführungszeichen als Argument übergeben.
printf benötigt den Backslash \ – eine Escape-Sequenz –, um bestimmte Zeichen darstellen zu können (eine Erklärung dieses Verhaltens finden Sie am Anfang dieses Kapitels).
printf kann den Inhalt von Variablen ausgeben, indem das Platzhalterzeichen % verwendet wird.
Das alte »Text mit printf ausgeben«
Hauptzweck von printf
ist das Ausgeben von Texten auf dem Bildschirm, mit dem folgenden einfachen Format:
printf("
text
");
Der text
wird von Anführungszeichen umgeben, diese wiederum von runden Klammern, gefolgt von einem Semikolon, weil es sich um eine Anweisung handelt.
Sonderzeichen, wie das Anführungszeichen, Tabulatoren, Backspace und Enter (eine neue Zeile) können in den dargestellten Text eingefügt werden. Diese Zeichen benötigen Escape-Sequenzen, wie sie noch beschrieben werden.
printf kann zwei oder auch mehr Zeilen darstellen, wenn man die Escape-Sequenz \n entsprechend oft in den Text einfügt.
Um ein Anführungszeichen im Text darzustellen, verwenden Sie \".
Wenn Sie Umlaute (also ä, ö, ü, Ä, Ö, Ü) sowie das Sonderzeichen ß in die
printf
-Ausgaben (oder auch in andere Ausgaben, die Sie noch kennenlernen werden) einbauen wollen, sollten Sie dafür die Escape-Sequenzen aus Tabelle 3.1 einsetzen. Das mit den deutschen Sonderzeichen ist eine dumme Sache, weil der ASCII-Code eigentlich so was gar nicht kennt. Wenn Sie nun zum Beispiel in einer Entwicklungsumgebung unter Windows den Quellcode schreiben, haben diese Sonderzeichen andere Codes als in der Kommandozeile. Da die meisten von Ihnen wohl mit Konsolenanwendungen beginnen werden, sind in Tabelle 3.1 daher nur diese Escape-Sequenzen aufgelistet.
printf("Gleich gibt's \x08erger\n");
erzeugt die Bildschirmausgabe:
Gleich gibt's Ärger
Aus diesem Grund sind auch alle Programmbeispiele ohne Umlaute und das Sonderzeichen ß geschrieben – haben Sie das schon bemerkt?
Die Escape-Sequenzen von printf
Tabelle 3.1 zeigt eine Anzahl von Escape-Sequenzen. Die meisten kennen Sie schon durch die Benutzung, andere sind sehr speziell und werden in späteren Kapiteln behandelt – oder auch nicht, je nachdem, wie ich mit dem Stoff durchkomme.
Sequenz | Bedeutung |
---|---|
\b | Backspace (der Cursor wird ein Zeichen nach links gebracht) |
\f | Blatt auswerfen (beim Drucker), auf dem Bildschirm wird je nach Konfiguration/Betriebssystem der Bildschirm gelöscht oder einfach nur ein seltsames Zeichen ausgegeben |
\n | Neue Zeile, wirkt wie Drücken der -Taste |
\r | Wagenrücklauf, der Cursor wird wieder an den Zeilenanfang gesetzt |
\t | Tabulator ansteuern |
\v | Vertikaler Tabulator (setzt den Cursor in eine neue Zeile, je nach Konfiguration/Betriebssystem wird auch einfach nur ein seltsames Zeichen ausgegeben) |
\\ | Das Backslash-Zeichen \ |
\' | Der Apostroph ' |
\" |
|