_ungetch, _ungetwch, _ungetch_nolock, _ungetwch_nolock

推回从控件个读取的最后一个字符。

重要

此 API 不能在运行时的窗口执行的应用程序。有关更多信息,请参见 CRT 函数不支持与 /ZW

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

参数

  • c
    将驱动器的字符。

返回值

两个函数返回字符 c,如果成功。 如果出现错误,_ungetch 返回 EOF 的值,并 _ungetwch返回WEOF。

备注

这些功能驱动器字符 c 回个控件,使 c 是 _getch 读取的下一个或 _getche (或_getwch 或_getwche)。 如果是在之下之前多次调用读取,_ungetch 和 _ungetwch 失败。 c 参数可能不是 EOF (或 WEOF)。

与 _nolock 后缀的版本与相同,但它们不从由其他线程的干扰保护。 因为它们不会产生开销锁定其他线程,它们可能是更快。 在线程安全的上下文仅使用这些功能 (如单线程应用程序或调用的大小处理已线程隔离的位置。

一般文本例程映射

TCHAR.H 实例

未定义的_UNICODE & _MBCS

定义的_MBCS

定义的_UNICODE

_ungettch

_ungetch

_ungetch

_ungetwch

_ungettch_nolock

_ungetch_nolock

_ungetch_nolock

_ungetwch_nolock

要求

实例

必需的标头

_ungetch, _ungetch_nolock

<conio.h>

_ungetwch, _ungetwch_nolock

<conio.h> 或 <wchar.h>

有关其他的兼容性信息,请参见中介绍的 兼容性

示例

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

请参见

参考

控制台和端口I/O

_cscanf, _cscanf_l, _cwscanf, _cwscanf_l

_getch, _getwch