====== ungetc() ====== ''ungetc()'' ist in der ''[[c:lib:stdio:start|stdio]]'' definiert, die in C über ''stdio.h'', bzw in C++ über ''cstdio'' eingebunden wird. ===== Funktion ===== ''ungetc()'' fügt ein Zeichen vor einen Eingabestream. Das bedeutet, dass eine Lesefunktion, wie ''[[fgetc()]]'', als nächstes Zeichen das Zeichen einliest, das mit ''ungetc()'' dem Inputstream vorangestellt wurde. Ziel ist, ein Zeichen, dass mit ''[[fgetc()]]'' gelesen wurde und für einen späteren Teil des Algorithmus erst noch gelesen werden muss. Eine andere Möglichkeit ist, Testeingaben voranzustellen, um ein Programm, das Eingaben erwartet, automatisch zu generieren. Dies wird im Beispiel gezeigt. ===== Signatur ===== #include int ungetc( int c, FILE * stream ); **c**: Das voranzustellende Zeichen \\ **stream**: Der Eingabestream, dem ''c'' vorangestellt werden soll \\ \\ **Return Value**: Bei Erfolg entspricht der Wert ''c'', ansonsten wird im Fehlerfall [[EOF]] zurückgeliefert. ===== Fehlerquellen ===== - ===== Beispiel ===== Das Beispiel hier entspricht dem Beispiel der Funktion [[getchar()]], lediglich wird die Standardeingabe mit drei Buchstaben gefüllt: #include #include int main () { int c = 0; ungetc( 'x', stdin ); ungetc( 'a', stdin ); ungetc( 'b', stdin ); while( c != 'x' ) { printf( "Bitte geben Sie einen Buchstaben ein: " ); fflush( stdout ); c = getchar(); printf( "Sie gaben folgenden Buchstaben ein: %c\n", c ); } return EXIT_SUCCESS; } **Ausgabe**: Bitte geben Sie einen Buchstaben ein: Sie gaben folgenden Buchstaben ein: b Bitte geben Sie einen Buchstaben ein: Sie gaben folgenden Buchstaben ein: a Bitte geben Sie einen Buchstaben ein: Sie gaben folgenden Buchstaben ein: x Auch wenn hier aus der Standardeingabe gelesen wird, muss von der Tastatur keine Eingabe getätigt werden, da die Standardeingabe ja bereits die Zeichen 'bax'. Hier sieht man auch, dass ''ungetc()'' die Buchstaben voranstellt, da das 'x' zwar zuerst mit ''[[ungetc()]]'' in den Stream 'gepusht' wurde, aber erst nach 'b' und 'a' gelesen wurde. ===== siehe auch ===== [[:|stdio]]: [[getchar()]], [[fgetc()]]