Collapse the table of content
Expand the table of content
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer

_ungetch, _ungetwch

Pushes back the last character read from the console.

int _ungetch(
   int c 
wint_t _ungetwch(
   wint_t c 


Character to be pushed.

Return Value

Both functions return the character c if successful. If there is an error, _ungetch returns a value of EOF and _ungetwch returns WEOF.


These function push the character c back to the console, causing c to be the next character read by _getch or _getche (or _getwch or _getwche). _ungetch and _ungetwch fail if they are called more than once before the next read. The c argument may not be EOF (or WEOF).

Generic-Text Routine Mappings

TCHAR.H routine _UNICODE & _MBCS not defined _MBCS defined _UNICODE defined
_ungettch _ungetch _ungetch _ungetwch


Routine Required header Compatibility
_ungetch <conio.h> Win 98, Win Me, Win NT, Win 2000, Win XP
_ungetch <conio.h> or <wchar.h> Win 98, Win Me, Win NT, Win 2000, Win XP

For additional compatibility information, see Compatibility in the Introduction.


All versions of the C run-time libraries.


// 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. */
      buffer[count++] = (char)ch;
      ch = _getche();
   _ungetch( ch );            /* Put back delimiter. */
   buffer[count] = '\0';      /* Null terminate the token. */
   printf( "\ntoken = %s\n", buffer );




token = White

See Also

Console and Port I/O Routines | _cscanf | _getch | Run-Time Routines and .NET Framework Equivalents

© 2015 Microsoft