Die getchar()-Funktion
Du möchtest wissen, was der getchar Befehl in C bedeutet? Hier erklären wir dir, wie du ihn verwenden kannst und noch weitere Funktionen, um Zeichen einzulesen.
Inhaltsübersicht
Getchar C und Rückgabewert
Die bekannteste und auch am meisten genutzte Funktion für Eingaben über die Tastatur, ist die getchar Funktion. Im Gegensatz zu printf ist sie allerdings nur in der Lage, einzelne Zeichen einzulesen. Das ist aber kein Problem, solange man weiß, wie man Schleifen verwendet. Denn mit ihnen lässt sich die getchar ganz einfach wiederholen, bis die ganze Zeichenkette eingelesen ist. Solltest du noch nicht wissen, wie du Funktionen dieser Art verwendest, findest du hier eine Anleitung zu den while- und for-Schleifen.
Hast du die getchar-Funktion erfolgreich verwendet, so gibt sie dir einen Rückgabewert vom Typ unsigned char zurück, der aber auch per Typecast in einen int-Wert umgewandelt werden kann. Ist der eingegebene Wert kein ASCII-Zeichen oder schlägt beim Ausführen der Funktion etwas fehl, erhältst du einen EOF-Fehler. Es werden aber auch noch andere Methoden für das Einlesen von Zeichen verwendet. Sie sind zwar weniger verbreitet, aber du solltest sie wenigstens einmal gesehen haben und wissen, was sie tun.
Alternative Einlesemethoden: getc
Die erste dieser Alternativen ist die getc Funktion. Sie liest, wie die getchar Funktion ein einzelnes Zeichen eines Inputstreams aus. Bei Erfolg wird der ASCII-Wert als int, bei Fehlschlag EOF ausgegeben.
Der Parameter, den wir hier angeben, heißt Standard-Input und steht – wie der Name bereits vermuten lässt – für den Standard-Inputstream.
Doch was ist jetzt der Unterschied zwischen den beiden Funktionen? Das ist schnell erklärt, denn die Beiden unterscheiden sich durch ihre Informations-Bezugs-Möglichkeiten. Während die getchar Funktion nur Daten vom Standard-Input einlesen kann, ist die getc Funktion in der Lage, das mit einem beliebigen Input-Stream zu tun.
getch und getche Funktionen
Zusätzlich zu diesen beiden Funktionen gibt es aber noch zwei andere: Die getch und die getche Funktion. Sie sind im Gegensatz zu getchar und getc keine Standard-Funktionen. Sie stehen daher nicht in der stdio-Bibliothek, sondern in conio.h. Conio steht für Console-Input-Output und ist eine veraltete Header-Datei.
Die getch wird meist von MS-DOS-Compilern wie z.B. Turbo C verwendet. Deswegen findet sie auch seltener bis gar keine Anwendung mehr. Das liegt daran, dass MS-DOS, oder auch Microsoft-Disk-Operating-System ein Ein-Nutzer, Single-Task Betriebssystem ist, das vor der Veröffentlichung von Windows 95 ein standalone Betriebssystem war. Heute ist es nur noch in der Windows-Kommandozeile integriert.
Damit ist diese Funktion allerdings auch nicht durch POSIX definiert. Das wirft neue Probleme auf. Denn POSIX ist ein Standard, der gewährleistet, dass der geschriebene Code auf allen Betriebssystemen funktioniert. Da die getch Funktion nicht durch POSIX unterstützt wird, läuft ein Programm mit einer solchen Funktion nativ nur auf Windows.
In ihrer eigentlichen Funktion unterscheidet sie sich allerdings nicht besonders von der getchar oder der getc Funktion, denn auch sie liest einzelne Zeichen von der Tastatur ein. Allerdings benutzt sie dazu keinen Buffer. Bei einem Buffer handelt es sich um einen temporären Speicher, der Daten zwischenlagert. Dass kein Buffer genutzt wird, hat zur Folge, dass jedes Zeichen sofort eingelesen wird, ohne zuvor auf die Bestätigung durch die Entertaste zu warten. Damit funktioniert die Eingabe von ASCII-Zeichen mit getch genauso wie in einem Texteditor.
Schauen wir uns jetzt noch die getche Funktion an. Auch sie ist keine Standard-Funktion, sondern stammt aus conio.h. Sie funktioniert genauso wie getch , gibt jedoch das eingelesene Zeichen bereits vor Programmende aus.
So, jetzt kannst du nicht nur alte Programme lesen, sondern auch neue, kompliziertere erstellen.