Freigeben über


ungetc, ungetwc

Schiebt ein Zeichen zurück auf den Stream.

Syntax

int ungetc(
   int c,
   FILE *stream
);
wint_t ungetwc(
   wint_t c,
   FILE *stream
);

Parameter

c
Zu verschiebendes Zeichen.

stream
Zeiger zur FILE -Struktur.

Rückgabewert

Bei erfolgreicher Ausführung gibt jede dieser Funktionen das Zeichenargument czurück. Wenn c nicht zurückgerückt werden kann oder kein Zeichen gelesen wurde, ist der Eingabedatenstrom unverändert und ungetc gibt ; ungetwc gibt EOFzurückWEOF. Ist stream dies NULLder Fehler, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die Ausführung fortgesetzt EOF werden darf oder WEOF zurückgegeben wird und errno auf .EINVAL

Informationen zu diesen und anderen Fehlercodes finden Sie unter , , _doserrno, _sys_errlistund _sys_nerr.errno

Hinweise

Die ungetc-Funktion schiebt das Zeichen c wieder auf stream und löscht den Dateiendeindikator. Der Stream muss zum Lesen geöffnet sein. Ein nachfolgender Lesevorgang stream beginnt mit c. Ein Versuch, EOF mit ungetc auf den Stream zu schieben, wird ignoriert.

Zeichen, die durch ungetc auf dem Stream platziert wurden, werden möglicherweise gelöscht, wenn fflush, fseek, fsetpos oder rewind aufgerufen wird, bevor das Zeichen vom Stream gelesen wird. Der Dateipositionszeiger erhält den Wert, den er auch schon hatte, bevor die Zeichen zurückgeschoben wurden. Der dem Stream entsprechende externe Speicher ist unverändert. Bei einem erfolgreichen ungetc-Aufruf für einen Textstream bleibt der Dateipositionszeiger so lange nicht angegeben, bis alle zurückgeschobenen Zeichen gelesen oder verworfen wurden. Bei jedem erfolgreichen ungetc-Aufruf für einen Binärstream wird der Dateipositionszeiger verringert. War sein Wert vor einem Aufruf 0 (null), ist er nach dem Aufruf nicht definiert.

Ergebnisse sind unvorhersehbar, wenn ungetc zwischen den beiden Aufrufen zweimal ohne einen Lesevorgang oder einen Dateipositionierungsvorgang aufgerufen wird. Nach einem Aufruf kann ein Aufruf fscanfungetc fehlschlagen, es sei denn, ein anderer Lesevorgang (zgetc. B. ) wurde ausgeführt, da fscanf selbst Aufrufe ungetcausgeführt wurden.

ungetwc ist eine Breitzeichenversion von ungetc. Bei jedem erfolgreichen ungetwc-Aufruf für einen Textstream oder Binärstream bleibt der Dateipositionszeiger jedoch so lange nicht angegeben, bis alle zurückgeschobenen Zeichen gelesen oder verworfen wurden.

Diese Funktionen sind während der Ausführung threadsicher und sperrabhängige Daten. Eine nicht sperrende Version finden Sie unter _ungetc_nolock, _ungetwc_nolock.

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Informationen zum Ändern dieses Verhaltens finden Sie im Global state in the CRT.

Generische Textroutinzuordnungen

TCHAR.H-Routine _UNICODE und _MBCS nicht definiert _MBCS Definiert _UNICODE Definiert
_ungettc ungetc ungetc ungetwc

Anforderungen

Routine Erforderlicher Header
ungetc <stdio.h>
ungetwc <stdio.h> oder <wchar.h>

Die Konsole wird in Universelle Windows-Plattform -Apps (UWP) nicht unterstützt. Die Standardstreamhandles, die der Konsole zugeordnet sind, stdinstdoutund stderrmüssen umgeleitet werden, bevor C-Laufzeitfunktionen sie in UWP-Apps verwenden können. Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

// crt_ungetc.c
// This program first converts a character
// representation of an unsigned integer to an integer. If
// the program encounters a character that is not a digit,
// the program uses ungetc to replace it in the  stream.
//

#include <stdio.h>
#include <ctype.h>

int main( void )
{
   int ch;
   int result = 0;

   // Read in and convert number:
   while( ((ch = getchar()) != EOF) && isdigit( ch ) )
      result = result * 10 + ch - '0';    // Use digit.
   if( ch != EOF )
      ungetc( ch, stdin );                // Put nondigit back.
   printf( "Number = %d\nNext character in stream = '%c'",
            result, getchar() );
}

      521aNumber = 521
Next character in stream = 'a'

Siehe auch

Stream-E/A
getc, getwc
putc, putwc