Discussion:
getch() und getchar - wo ist da der Unterschied?
(zu alt für eine Antwort)
Ottmar Ohlemacher
2004-10-10 22:18:46 UTC
Permalink
Hallo,

bin gerade in einem C-Tutorial über die Funktion getch() gestolpert.
Ist die identisch mit getchar(), wenn nein, wo sind die Unterschiede?

Danke für Info.

mfG Ottmar
--
*ACHTUNG* E-mails mit der Adresse im Header wandern ungelsen in den Muell
Wer mich per Mail erreichen will, der muss "yyyyyyy" gegen
"emacher" ersetzen. Die Spamflut machte diese Maßnahme notwendig.
Stefan Ram
2004-10-10 23:31:06 UTC
Permalink
Post by Ottmar Ohlemacher
bin gerade in einem C-Tutorial über die Funktion getch()
gestolpert. Ist die identisch mit getchar(), wenn nein, wo
sind die Unterschiede?
Die Bedeutung von "getchar" ist durch die C-Norm definiert,
die von "getch" nicht. Daher lassen sich aus der Norm auch
keine Aussagen über Unterschiede ableiten.

Der von Dir gelesene C-Lehrtext behandelt also neben C auch
noch eine Erweiterung von C, in der es "getch" gibt.
Horst Kraemer
2004-10-11 00:53:42 UTC
Permalink
Post by Ottmar Ohlemacher
bin gerade in einem C-Tutorial über die Funktion getch() gestolpert.
Ist die identisch mit getchar(), wenn nein, wo sind die Unterschiede?
Die Funktion getch gehoert nicht zur Programmiersprache C, sondern sie
gehoert zu einer Erweiterungungsbibliothek (Header heisst meist
conio.h), die aus MS-DOS ueberliefert ist und in Microsoft- und
Borland-Programmierumgebungen fuer Windows mitgeliefert werden. Die
Verwendung dieser Funktion ist DOS/Windows-orientierten Programmierern
so gelaeufig, dass sie diese Tatsache leider vergessen, wenn sie
Tutorials schreiben. Daher ist ein Tutorial, das diese Funktion und
conio.h verwendet, mit aeusserstes Vorsicht zu geniessen. Im Klartext
bedeutet dies fuer einen Anfaeger, dass er dieses Tutorial lieber
meiden sollte, falls es nicht hoechstpersoenlich auf die erwaehnten
Tatsachen hinweist.

Die Funktion getch liest ein Zeichen direkt von der Tastatur, ohne
dass <RETURN> eingegebenen werden muss, und ohne das Echo der Eingabe
auf dem Bildschirm anzuzeigen.

Typische Anwendung unter WinDos

puts("Press any key to continue...\n");
if (getch()==0) getch():

Am Programmende reicht auch ein nacktes getch() an dieser Stelle. Wenn
noch weitere Eingabe folgen sollen, waere ein nacktes getch() ein
grober Programmierfehler.
--
Horst
Erich Fruehstueck
2004-10-11 04:47:47 UTC
Permalink
Post by Horst Kraemer
Post by Ottmar Ohlemacher
bin gerade in einem C-Tutorial über die Funktion getch() gestolpert.
Ist die identisch mit getchar(), wenn nein, wo sind die Unterschiede?
Die Funktion getch gehoert nicht zur Programmiersprache C, sondern sie
gehoert zu einer Erweiterungungsbibliothek (Header heisst meist
conio.h), die aus MS-DOS ueberliefert ist und in Microsoft- und
Borland-Programmierumgebungen fuer Windows mitgeliefert werden. Die
Verwendung dieser Funktion ist DOS/Windows-orientierten Programmierern
so gelaeufig, dass sie diese Tatsache leider vergessen, wenn sie
Tutorials schreiben. Daher ist ein Tutorial, das diese Funktion und
conio.h verwendet, mit aeusserstes Vorsicht zu geniessen. Im Klartext
bedeutet dies fuer einen Anfaeger, dass er dieses Tutorial lieber
meiden sollte, falls es nicht hoechstpersoenlich auf die erwaehnten
Tatsachen hinweist.
Weiters ist noch zu erwähnen, daß es unter UNIX die Erweiterungsbibliothek
(n)cures gibt, zu der ebenfalls eine Funktion namens getch() gehört.
Curses-Implementationen gibt es auch für Windows und DOS, der zugehörige
Header ist <curses.h> bzw. <ncurses.h>.

Erich
--
New Version of EFEU released, More fun with Tk support.
Get the open source from http://efeu.cybertec.at now.
Oliver S.
2004-10-11 17:19:15 UTC
Permalink
Daher ist ein Tutorial, das diese Funktion und conio.h verwendet,
mit aeusserstes Vorsicht zu geniessen. Im Klartext bedeutet dies
fuer einen Anfaeger, dass er dieses Tutorial lieber meiden sollte,
falls es nicht hoechstpersoenlich auf die erwaehnten Tatsachen
hinweist.
Aus der Sicht eines Standard-Evangelisten vielleicht, aber ein
gesunder Menesch nennt sowas einen kleinen Fauxpas. Das Tutorial
aufgrund dieses einen Mangels und ohne weitere Erkenntnisse über
dieses als untauglich abzuurteilen halte ich für überzogen.
Erich Fruehstueck
2004-10-11 20:56:05 UTC
Permalink
Post by Oliver S.
Daher ist ein Tutorial, das diese Funktion und conio.h verwendet,
mit aeusserstes Vorsicht zu geniessen. Im Klartext bedeutet dies
fuer einen Anfaeger, dass er dieses Tutorial lieber meiden sollte,
falls es nicht hoechstpersoenlich auf die erwaehnten Tatsachen
hinweist.
Aus der Sicht eines Standard-Evangelisten vielleicht, aber ein
gesunder Menesch nennt sowas einen kleinen Fauxpas. Das Tutorial
aufgrund dieses einen Mangels und ohne weitere Erkenntnisse über
dieses als untauglich abzuurteilen halte ich für überzogen.
Nicht nur aus der Sicht eines Standard-Evangelisten, sondern für jeden der
nicht unter DOS/Windows programmiert. Es ist absolut ärgerlich, wenn ein
Buch/Tutorial, das nicht explizit für DOS/Windows deklariert wurde, Beispiele
enthält, die nicht kompilieren.

Erich
--
New Version of EFEU released, More fun with Tk support.
Get the open source from http://efeu.cybertec.at now.
Horst Kraemer
2004-10-12 14:33:04 UTC
Permalink
Post by Oliver S.
Daher ist ein Tutorial, das diese Funktion und conio.h verwendet,
mit aeusserstes Vorsicht zu geniessen. Im Klartext bedeutet dies
fuer einen Anfaeger, dass er dieses Tutorial lieber meiden sollte,
falls es nicht hoechstpersoenlich auf die erwaehnten Tatsachen
hinweist.
Aus der Sicht eines Standard-Evangelisten vielleicht, aber ein
gesunder Menesch nennt sowas einen kleinen Fauxpas. Das Tutorial
aufgrund dieses einen Mangels und ohne weitere Erkenntnisse über
dieses als untauglich abzuurteilen halte ich für überzogen.
Bedenke, dass etwas, was fuer einen "gesunden Menschen" wie Dich ein
kleiner Fauxpax ist, fuer einen Anfaenger - also fuer die Zielgruppe -
u.U. ein unueberwindliches Hindernis darstellt.

Darueber, dass Du mich als Standard-Evengelisten und als nicht
gesunden Menschen hinstellst, sehe ich einfach mal hinweg...

MfG
Horst

R.Freitag
2004-10-11 07:32:19 UTC
Permalink
Post by Ottmar Ohlemacher
Hallo,
bin gerade in einem C-Tutorial über die Funktion getch() gestolpert.
Ist die identisch mit getchar(), wenn nein, wo sind die Unterschiede?
Danke für Info.
Den bisher vorhandenen Informationen ist hinzuzufügen, daß getch() in der
Regel als Makro vorhanden ist.

Robert
Loading...