Freigeben über


ungetc, ungetwc

Drückt eine Zeichenrückseite auf den Stream.

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

Parameter

  • c
    Gedrückt werden Zeichen.

  • stream
    Zeiger auf FILE-Struktur.

Rückgabewert

Wenn erfolgreich, gibt jede dieser Funktionen das Zeichenargument c zurück . Wenn c nicht zurückgeschoben werden kann, oder wenn kein Zeichen gelesen wurde, ist der Eingabestream unveränderte und ungetc gibt EOF; ungetwc gibt WEOF.Wenn streamNULL ist, wird der ungültige Parameterhandler aufgerufen, wie in Parametervalidierung beschrieben.Wenn die Ausführung zulässig ist, um fortzufahren, wird EOF oder WEOF zurückgegeben und errno wird zu EINVAL festgelegt.

Weitere Informationen über diese und andere Fehlercodes, finden Sie unter _doserrno, errno, _sys_errlist und _sys_nerr.

Hinweise

Die Funktion ungetc drückt das Zeichen c wieder in den stream und löscht den Dateiende-Indikator.Der Stream muss zum Lesen geöffnet sein.Ein folgender Lesevorgang auf stream startet mit c*.* Ein Versuch, EOF auf den Stream mit ungetc zu drücken wird ignoriert.

Die Zeichen, die auf den Stream durch ungetc platziert werden, werden möglicherweise gelöscht, wenn fflush, fseek, fsetpos oder rewind aufgerufen wird, bevor das Zeichen aus dem Stream gelesen wird.Der Stellungsanzeiger hat den Wert, den sie hatte, bevor die Zeichen zurückgeschoben wurden.Der externe Speicher entsprechend dem Stream ist unverändert.Auf einem erfolgreichen Aufruf ungetc für einen Textstream, ist der Stellungsanzeiger nicht angegeben, bis alle zurückgeschobenen Zeichen gelesen oder verworfen werden.Auf jedem erfolgreichen Aufruf ungetc für einen Binärstream, wird der Stellungsanzeiger verringert; Wenn der Wert 0 war, bevor ein Aufruf, der Wert nach dem Aufruf nicht definiert ist.

Ergebnisse sind unvorhersehbar, wenn ungetc zweimal ohne einen Lese- oder Datei-Positionierenvorgang zwischen den zwei Aufrufen aufgerufen wird.Nachdem ein Aufruf von zu fscanf, ein Aufruf ungetc fehlschlägt, es sei denn, ein anderer Lesevorgang (z getc) ausgeführt wurde.Dies ist, da fscanf selbst ungetc aufruft.

ungetwc ist eine Breitzeichen-Version von ungetc.jedoch auf jedem erfolgreichen Aufruf ungetwc für einen Text oder einen Binärstream, ist der Wert des Stellungsanzeigers nicht angegeben, bis alle zurückgeschobenen Zeichen gelesen oder verworfen werden.

Diese Funktionen sind threadsichere und Sperrensensible Daten während der Ausführung.Eine nicht sperrend Version finden Sie unter _ungetc_nolock, _ungetwc_nolock.

Zuordnung generische Textroutinen

TCHAR.H-Routine

_UNICODE & _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 nicht in Windows Store-App unterstützt.Die Standardstreamhandles, die mit der Konsole, stdin, stdout und stderr zugeordnet werden, müssen umgeleitet werden, bevor sie C-Laufzeitfunktionen in Windows Store-App verwenden können.So zusätzlicher Kompatibilitätsinformation finden Sie unter Kompatibilität in der Einführung.

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() );
}
  

.NET Framework-Entsprechung

Nicht zutreffend. Um die Standard-C-Funktion aufzurufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

Siehe auch

Referenz

Stream E/A

getc, getwc

putc, putwc