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