Поделиться через


_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