ungetc() wandelt das vorher gelesene Byte c in den Typ unsigned char um und stellt das entsprechende Byte in den Datenstrom zurück, auf den stream zeigt. Die zurückgestellten Bytes werden durch nachfolgende Leseoperationen aus diesem Datenstrom in umgekehrter Reihenfolge zurückgegeben. Wenn zwischendurch eine Funktion zur Positionierung (fseek() , fsetpos() oder rewind() ) für denselben Datenstrom erfolgreich aufgerufen wird, werden die zurückgestellten Bytes aus dem Datenstrom gelöscht. Der externe Speicher, der dem Datenstrom zugeordnet ist, bleibt unverändert.
BS2000 Der Aufruf einer der folgenden Funktionen hebt die Effekte des ungetc -Aufrufs (z.B. Rückwärtspositionierung) auf: fseek() , fsetpos() , lseek() , rewind() , fflush() . (Ende) Das Zurückstellen genau eines Bytes ist garantiert. Wenn ungetc() zu oft für denselben Datenstrom aufgerufen wird, ohne dass zwischendurch eine Leseoperation oder ein Positionieren stattfindet, kann das Zurückstellen fehlschlagen. Im C-Laufzeitsystem können maximal {BUFSIZE} Zeichen zurückgestellt werden (siehe stdio.h ). Wenn der Wert von c gleich der Konstanten EOF ist, schlägt das Zurückstellen fehl und der Eingabestrom bleibt unverändert. Ein erfolgreicher ungetc -Aufruf löscht das Dateiendekennzeichen für diesen Datenstrom. Der Wert des Lese-/Schreibzeigers für den Datenstrom ist nach einem Lesen oder Verwerfen aller zurückgestellten Bytes derselbe wie vor dem Zurückstellen der Bytes. Der Lese-/Schreibzeiger wird durch jeden erfolgreichen ungetc -Aufruf erniedrigt. Wenn sein Wert vor einem Aufruf gleich 0 ist, ist sein Wert nach dem Aufruf unbestimmt. |