Video

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:

printf
direkt ins Video springen
printf

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.

Studyflix vernetzt: Hier ein Video aus einem anderen Bereich

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.

printf, printf char, printf string
direkt ins Video springen
Umwandlungszeichen

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:

scanf
direkt ins Video springen
scanf

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.

printf und scanf — häufigste Fragen

(ausklappen)
  • Wie verwendet man scanf in C?
    Man verwendet scanf() in C, indem man zuerst eine Formatzeichenfolge angibt und danach die Variablen übergibt, in die die Eingabe gespeichert werden soll. Für Variablen steht dabei ein & davor. Zum Beispiel: int x; scanf("%i", &x); liest eine ganze Zahl in x ein.
  • Wie kann man in C Zahlen einlesen?
    Man liest Zahlen in C meist mit scanf() ein, indem man das passende Umwandlungszeichen im Formatstring wählt und die Zielvariable übergibt. Für ganze Zahlen nutzt man oft %i, für Dezimalzahlen %f und für double %lf. Beispiel: double a; scanf("%lf", &a);.
  • Warum setzt man bei scanf ein & vor die Variable?
    Das & steht bei scanf() vor der Variable, weil scanf() wissen muss, wohin der eingelesene Wert geschrieben werden soll, also welche Speicherstelle zur Variable gehört. Ohne & bekommt scanf() nicht die richtige Stelle zum Speichern, was typischerweise zu Fehlermeldungen oder falschem Verhalten führt.
  • Wie kann man Leerzeichen in scanf() einlesen?
    Leerzeichen kann man mit scanf() einlesen, indem man statt %s ein Format verwendet, das nicht beim ersten Leerzeichen abbricht. Ein gängiges Muster ist ein Scanset bis zum Zeilenende. Beispiel: char text[100]; scanf(" %[^\n]", text); liest eine ganze Eingabezeile inklusive Leerzeichen in text ein.

Nach Beantwortung speichern wir deine Antwort, um Studyflix zu verbessern. Mehr dazu erfährst du in unserer Datenschutzerklärung.

Ein und Ausgabe verstehen

printf und scanf sind wichtige Funktionen für Ein und Ausgabe in C Programmen. Wer sich mit Ein und Ausgabe beschäftigt, formatiert Text und Zahlen für die Konsole und liest Nutzereingaben in Variablen ein. So erkennst du, wie Datentypen und Formatzeichen zusammenpassen und warum ein Programm sonst falsche Werte übernimmt. Weitere Videos dazu findest du in unserem Informatikbereich.

Lernen lohnt sich! Entdecke hier deine Chancen.