Char in den TastaturBuffer ablegen
-
pale dog schrieb:
das geht nicht, pointer sind meistens zu breit dafür
Wenn man vorher etwas z.B. mit fgest einliest, dann geht das.
-
proggingmania schrieb:
pale dog schrieb:
das geht nicht, pointer sind meistens zu breit dafür
Wenn man vorher etwas z.B. mit fgest einliest, dann geht das.
nie im leben!
-
pale dog schrieb:
nie im leben!
#include <stdio.h> #include <string.h> int main () { int c; char buf[30]=""; puts("Geben Sie eine Zeichenkette ein( Maximal 26 Zeichen ): "); fgets( buf, 26, stdin ); for ( c = 'a'; c < 'a' + strlen(buf); c++ ) { printf("Pushback: %3d %c\n", ungetc( c, stdin ), c ); } puts("Read Keyboard-Buf:"); while( ( c = getchar() ) != '\n' ) printf("%c", c ); return 0; }
-
proggingmania schrieb:
pale dog schrieb:
nie im leben!
...
zufall? was sagt der C-standard dazu?
-
pale dog schrieb:
zufall? was sagt der C-standard dazu?
Keine Ahnung.
-
ah, hier
ISO/IEC 9899:1999 (E)
ISO/IEC 7.19.7.11 The ungetc function schrieb:
One character of pushback is guaranteed. If the ungetc function is called too many
times on the same stream without an intervening read or file positioning operation on that
stream, the operation may fail.
-
pale dog schrieb:
... If the ungetc function is called too many
times ...Da könnte man sich jetzt die Frage stellen, wie oft too many times ist.
Es scheint jedefalls so zu sein, das man die mit fgets entnommene Anzahl wieder zurückpacken kann( auch in veränderter Form).
Welchen Sinn das hat, das sei mal dahingestellt
-
Es ist aber eben nur für ein Zeichen garantiert. Viel Spass auf undefiniertem Terrain
Was ich damit sagen will: Es mag gehen, aber nicht überall. Von daher besser Finger weg.
-
mal ne blöde frage, aber wenn man mit setvbuf den stdin buffer durch nen eigenen ersetzt, dann könnt man den doch beschreiben oder geht das nicht?
-
proggingmania schrieb:
Da könnte man sich jetzt die Frage stellen, wie oft too many times ist.
Nach Terry Pratchett mindestens 4, wir wissen wie Orks zählen: one, two, three, many, lots, many and one ....