Читать книгу C für Dummies - Dan Gookin - Страница 90
Die Funktion scanf (Einlesen eines Strings)
ОглавлениеDie scanf
-Funktion wird benutzt, um Informationen von der Tastatur einzulesen. In der gezeigten Form wird scanf
genutzt, um eine Textzeile einzulesen:
scanf("%s", var);
Genau wie bei der Funktion printf
folgt der Funktion scanf
allerlei Zeugs in Klammern. Aber anders als printf
gibt scanf
den Text in den Anführungszeichen nicht auf dem Bildschirm aus.
Zuerst kommt ein Formatstring, der scanf
mitteilt, auf welche Art Text zu warten ist. Wenn mit %s
eine Textzeile eingelesen werden soll, wird %s
in Anführungszeichen hingeschrieben. Diese Zeichen sagen scanf
, dass es auf eine Textzeile warten soll, die mit Drücken der -Taste abgeschlossen wird.
Dem Formatstring folgt ein Komma, danach der Name der Variablen. Auf diese Weise sagt man scanf
, wo der Text abgelegt werden soll.
Auch die scanf
-Funktion ist eine Anweisung in C, daher wird auch sie mit einem Semikolon abgeschlossen.
Als Beispiel wollen wir den Vornamen von jemandem einlesen; zuerst brauchen wir also Speicherplatz für den Namen:
char vorname[21];
Diese C-Anweisung stellt Speicher für einen Textstring bereit – so wie man einen Tresor für eine große Summe Geld bereitstellt. Und genau wie der Tresor ist auch die Variable »leer«, wenn man sie erstellt. Es ist nichts darin enthalten. Es können bis zu 20 Zeichen in der Variablen gespeichert werden, was durch die 21
in eckigen Klammern angegeben wird.
20? 21? Was denn nun? In Kapitel 10 über Strings werden Sie das genauer erfahren, C hat die Angewohnheit, am Ende eines Strings ein sogenanntes Nullbyte (ein \0x
) zu speichern. Damit merkt C, wann der String zu Ende ist – vergleichbar einem Stoppschild. Für 20 Zeichen brauchen wir also 21 Zeichen.
Der nächste Schritt ist, die Funktion scanf
später im Programm zu benutzen, um Text einzulesen. Etwas wie die folgende Zeile würde funktionieren:
scanf("%s", vorname);
Und so sieht das aus Sicht von scanf
aus: »Okay, ich soll gemäß %s
einen String von der Tastatur einlesen. Und den ganzen Text speichere ich in der Stringvariablen mit dem Namen vorname
. Heiße Sache. Wenn der Benutzer jetzt noch was eintippt, könnte ich meinen Job auch erledigen.«
Abbildung 3.1 verdeutlicht das Konzept, das ich hier gerade beschrieben habe.
Abbildung 3.1: Die Anatomie von Stringvariablen und scanf
Wenn Sie ein C-Programm schreiben, das Eingaben benötigt, müssen Sie einen Platz bereitstellen, um die Eingaben abzulegen. Für Texteingaben nimmt man eine Stringvariable, die mithilfe des Schlüsselworts char erstellt wird. (Schauen Sie in das Programm am Ende des Kapitels, wenn Sie ein Beispiel hierzu suchen.)
Benutzt man in einem C-Programm Variablen, so werden diese vor der ersten Benutzung in das Programm geschrieben. Es sind reguläre Anweisungen in C und sie benötigen ein Semikolon am Ende.
Zu Variablen erfahren Sie in Kapitel 4 mehr.
scanf funktioniert wie printf, aber es benötigt eine Variable, um den Text abzulegen. Es reicht nicht aus, einfach zu sagen: »Lies mal die Tastatur«, man braucht einen Ort für die Ablage des Textes.
Die Stringvariable ist ein Ort, an dem der eingegebene Text gespeichert wird. Das Schlüsselwort char teilt dem Compiler den Typ der Variablen mit und wie viel Speicherplatz benötigt wird.
Die Formatierungsanweisungen von scanf sind identisch mit denen von printf. Im Normalfall benutzt man sie meistens zusammen mit printf, denn es gibt bessere Wege, die Tastatur abzufragen als mit scanf. Schauen Sie in Tabelle 3.2 im Abschnitt »Mehr Spaß mit printf« nach, wenn Sie nach einer Liste aller Formatierungsmöglichkeiten suchen.