U
muffinmaker schrieb:
Wenn man pingelig sein will, und dazu neige ich ;), muss man doch sagen, dass getchar eben nicht explizit ein Zeichen von der Tastatur entgegennimmt, sondern den Tastaturpuffer ausliest, und das auch, wenn keine Taste gedrückt wird (wie im zweiten Durchlauf der Schleife meines ursprünglichen Beispiels)... Aus meiner bisherigen Anfängersicht kommt es mir so vor, als ob getchar nicht ganz konsequent implementiert ist, wenn das Betätigen der Returntaste zur Bestätigung der Eingabe quasi Teil des Funktionsaufrufs ist (ich weiß, ich drücke mich nicht richtig aus, aber ich hoffe auf gnädige Zuhörer) sollte doch getchar eigenständig dafür sorgen, dass nur das Zeichen VOR dem Return eingelesen wird...
das dumme an 'getchar' ist, dass es blockt, bis ein '\n' eingelesen wurde. dann aber nudelt es alle zeichen raus, bis der buffer leer ist. ein wirklich unschönes und denkbar unpraktisches verhalten. ein richtig 'cooles' getchar wäre non-blocking und würde im fall von 'nichts' ein EOF o.ä. zurückliefern.
btw, das '\n' bekommst du z.b. so weg:
int getchr (void)
{
int c;
do
c = getchar();
while (c == '\n');
return c;
}