Freigeben über


_ungetch, _ungetwch, _ungetch_nolock, _ungetwch_nolock

Schiebt das zuletzt aus der Konsole gelesene Zeichen zurück.

Wichtig

Diese API kann nicht in Anwendungen verwendet werden, die in Windows-Runtime ausgeführt werden.Weitere Informationen finden Sie unter CRT-Funktionen nicht mit /ZW unterstützt.

int _ungetch(
   int c 
);
wint_t _ungetwch(
   wint_t c 
);
int _ungetch_nolock(
   int c 
);
wint_t _ungetwch_nolock(
   wint_t c 
);

Parameter

  • c
    Zu verschiebendes Zeichen.

Rückgabewert

Beide Funktionen geben bei Erfolg das Zeichen c zurück. Wenn ein Fehler vorhanden ist, gibt _ungetch einen Wert von EOF zurück und _ungetwch gibt WEOF zurück.

Hinweise

Diese Funktionen drücken das Zeichen c wieder auf der Konsole und lassen c, das folgende Zeichen sein, das von _getch oder _getche (oder _getwch oder _getwche) gelesen wird. _ungetch und _ungetwch schlagen fehl, wenn sie vor dem nächsten Lesevorgang mehrmals aufgerufen werden. Das c-Argument darf nicht EOF (oder WEOF) sein.

Die Versionen mit dem _nolock-Suffix sind identisch, allerdings sind sie nicht vor Störungen durch andere Threads geschützt. Sie sind möglicherweise schneller, da kein Mehraufwand zur Sperrung anderer Threads erforderlich ist. Verwenden Sie diese Funktionen nur in threadsichere Kontexten wie z. B. in Singlethreadanwendungen oder in Fällen, in denen der aufrufende Bereich die Threadisolation bereits handhabt.

Zuordnung generischer Textroutinen

TCHAR.H-Routine

_UNICODE & _MBCS nicht definiert

_MBCS definiert

_UNICODE definiert

_ungettch

_ungetch

_ungetch

_ungetwch

_ungettch_nolock

_ungetch_nolock

_ungetch_nolock

_ungetwch_nolock

Anforderungen

Routine

Erforderlicher Header

_ungetch, _ungetch_nolock

<conio.h>

_ungetwch, _ungetwch_nolock

<conio.h> oder <wchar.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

// crt_ungetch.c
// compile with: /c
// In this program, a white-space delimited 
// token is read from the keyboard. When the program 
// encounters a delimiter, it uses _ungetch to replace 
// the character in the keyboard buffer.
//

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

int main( void )
{
   char buffer[100];
   int count = 0;
   int ch;

   ch = _getche();
   while( isspace( ch ) )      // Skip preceding white space.
      ch = _getche();
   while( count < 99 )         // Gather token.
   {
      if( isspace( ch ) )      // End of token.
         break;
      buffer[count++] = (char)ch;
      ch = _getche();
   }
   _ungetch( ch );            // Put back delimiter.
   buffer[count] = '\0';      // Null terminate the token.
   printf( "\ntoken = %s\n", buffer );
}
  

Siehe auch

Referenz

Konsole und Port-E/A

_cscanf, _cscanf_l, _cwscanf, _cwscanf_l

_getch, _getwch