printf und scanf
Du möchtest wissen, was die Befehle printf und scanf in C bedeuten? Hier erklären wir dir den Unterschied zwischen den beiden Funktionen anhand ihrer Syntax.
Inhaltsübersicht
printf und scanf: Input und Output in C
Es gibt zwei Funktionen in C, die sich für Anfänger eignen und sich mit In- und Output beschäftigen. Für den Input ist die sogenannte scanf-Funktion zuständig, während sich die printf-Funktion um den Output kümmert. Um Daten aus deinem Programm als formatierte Zeichenfolge auf die Kommandozeile zu „drucken“, benutzt du die printf-Funktion. printf steht für print formatted und scanf für scanf formatted.
C printf format und weitere Eingabeparameter
Ihr Prototyp sieht so aus:
Als Eingabeparameter erhält sie const und eine sogenannte Formatzeichenfolge. Ersteres sorgt dafür, dass die Formatzeichenfolge format konstant ist. Zweiteres legt die ausgegebene Zeichenfolge fest. Da sie jedoch standardmäßig konstant ist, ist eine direkte Angabe nicht nötig.
Umwandlungszeichen: printf char, printf float bzw. printf double, printf string usw.
Sie gibt dann – wie in diesem Beispiel – genau eine gegebene ASCII-Zeichenkette aus. Aber wieder einmal gibt es keine Regel ohne Ausnahme. Deswegen kannst du, um auch Werte deiner Variablen nutzen zu können, sogenannte Umwandlungszeichen nutzen, die den String um diese Werte erweitern. Diese beginnen mit % und enden mit einem jeweils anderen Buchstaben, abhängig vom gewünschten Typen der Wertausgabe. Wenn du nun aber diese Markierungen in deinem angegebenen String verwendest, musst du auch noch die damit referenzierte Variable angeben. Dies machst du, indem du den Namen der Variable als weiteren Parameter angibst.
Die wichtigsten Umwandlungszeichen sind: %i für Daten des Types int, %c für ASCII-Zeichen des Typs char, %f für Dezimalbrüche, e für Zahlen in der Fließkommadarstellung und %s für Strings beziehungsweise Zeichenketten.
Wenn du mehrere Umwandlungszeichen in einer Ausgabe verwendest, musst du auch darauf achten, für jede Variable, beziehungsweise jeden Wert einen eigenen Parameter anzufangen.
scanf C
Jetzt kannst du Werte ausgeben. Aber wie kommen wir an die Daten überhaupt heran? Dazu gibt es die scanf-Funktion. Diese heißt nicht nur wie dein Scanner zu Hause, sondern erfüllt auch genau dessen Zweck: sie „scannt“ Benutzereingaben, die über die Tastatur erfolgen. Mit ihr ist es dir möglich, eine formatierte Zeichenfolge, auch mit darauffolgender Typumwandlung, in einer Variable abzuspeichern.
Eine solche Funktion sieht in etwa so aus:
Im Endeffekt ist sie der printf Funktion vom Aufbau sehr ähnlich, jedoch gibt sie als Rückgabewert die Anzahl der gelungenen Wertumwandlungen aus. Abgesehen davon nimmt sie aber auch dieselben zwei Parameter an. Wenn du sie dann während der Programmlaufzeit aufrufst, wartet sie geduldig, bis du etwas eingibst und mit Enter bestätigst. Dabei musst du für jede Umwandlungsangabe, für die ein Wert eingegeben werden muss, eine eigene Eingabe durchführen. Stimmt der Typ überein, wird diese dann in der angegebenen Variable gespeichert.
Speichern mit &
Apropos speichern, damit deine Werte auch abgespeichert werden können, ist es unerlässlich, dass du immer ein Kaufmannsund vor dem Variablennamen angibst. Sonst erhältst du nur eine Fehlermeldung.
Für Umwandlungszeichen gelten genau dieselben Regeln, wie bei der printf-Funktion, jedoch gibt es noch ein weiteres, wichtiges Umwandlungszeichen: Das lf. Es wandelt Dezimalbruchkonstanten in Werte des Typs double um. Du musst allerdings auf eine Sache ganz besonders achten. Sollte eine Zahl nämlich zu viele Stellen für den gewünschten Typ haben, werden alle nicht benutzten Stellen „abgeschnitten“, das heißt sie sind für immer verloren.
So, nun musst du das Gelernte nur noch anwenden und Voila, wir haben ein fertiges Programm, das zwar nicht das komplexeste ist, aber immerhin bereits einen Zweck erfüllt.