Beitragsseiten

Formatierte Eingabe mit scanf()

Um eine Eingabe von der Tastatur bereitzustellen, kann man die scanf()-Funktion benutzen. Der scanf() steht in der Standardbibliothek stdio.h.

 
Als erstes die Syntax der Funktion:

int scanf(const char *format, ...);


Mit Hilfe der Funktion scanf() können unterschiedliche Werte (unterschiedlichen Datentypen) formatiert eingelesen werden. Dabei wird von dem Standardeingabe (stdin), normalerweise die Tastatur, eingelesen.
Darüber hinaus liefert der scanf() die Zahl eingelesenen Zeichen als Rückgabewert zurück. Bei fehlerfreier Ausführung liefert die scanf()-Funktion die Anzahl der Zeichen zurück, die erfolgreich gelesen, konvertiert und gespeichert wurden. Wenn die Eingabe von scanf() fehlerhaft ist, gibt scanf() eine 0 zurück.

Beispiel:

#include <stdio.h>

void main ()
{
  int zahl;
  
  printf("Bitte geben Sie eine Zahl ein : "); // Ausgabe der Eingabeaufforderung
  scanf("%d",&zahl);                          // Eingabe durch den Benutzer
  printf("Die Zahl lautet %d.\n", zahl);      // Ausgabe der Benutzereingabe
}


Bildschirmausgabe für die Eingabe 100:

Bitte geben Sie eine Zahl ein : 100
Die Zahl lautet 100.


Der Aufbau von scanf() hat sehr viel Ähnlichkeit mit printf(). Scanf() ließt die Eingabe formatiert ein. Darum hat die Funktion in den runden Klammern einen Bereich, der durch zwei Anführungszeichen gebildet wird und die Formatspezifizierung (siehe auch Variablen / Konstanten / Datentypen) des einzulesenden Werts aufnimmt. Dahinter wird durch ein Komma getrennt die Variable angegeben, die die Eingabe aufnehmen soll. Der Unterschied zum printf() besteht darin, dass vor der Variablen der Adressoperator & (siehe Operatoren) steht, da der scanf() direkt auf den Arbeitsspeicherbereich zugreift.

Achtung: Das Weglassen des Adressoperators & ist auch ein häufiger Fehler von Anfänger, der immer wieder zu Programmabstürzen führt.
Ein weiterer Fehler ist den scanf() wie den printf() zu benutzen. Das heißt folgender scanf() funktioniert nicht.

scanf("Bitte geben Sie eine Zahl ein: %d\n", &zahl);