_ungetch, _ungetwch, _ungetch_nolock, _ungetwch_nolock

Отправляет обратно последний знак чтение из консоли.

Важное примечаниеВажно

Этот API нельзя использовать в приложениях, запускаемых в среде выполнения Windows.Дополнительные сведения см. в разделе Функции 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 );
}
  

См. также

Ссылки

ВВОДА-ВЫВОДА консоли и порта

_cscanf, _cscanf_l, _cwscanf, _cwscanf_l

_getch, _getwch