_ungetch, _ungetwch, _ungetch_nolock, _ungetwch_nolock
Envia novamente o último caractere que é lido do console.
Importante
Esta API não pode ser usada em aplicativos que executam no Tempo de Execução do Windows.Para obter mais informações, consulte Funções CRT sem suporte pelo /ZW.
int _ungetch(
int c
);
wint_t _ungetwch(
wint_t c
);
int _ungetch_nolock(
int c
);
wint_t _ungetwch_nolock(
wint_t c
);
Parâmetros
- c
Caractere a ser armazenado.
Valor de retorno
Ambas as funções retornam o caractere c em caso de sucesso. Se houver um erro, _ungetch retorna um valor de EOF e _ungetwchretornaWEOF.
Comentários
Essas funções empurram o caractere c de volta ao console, fazendo com que c esteja no próximo caractere lido por _getch ou _getche (ou_getwch ou_getwche). _ungetch e _ungetwch falharão se forem chamados mais de uma vez antes da próxima leitura. O argumento c pode não ser EOF (ou WEOF).
As versões com o sufixo _nolock são idênticas, exceto pelo fato de que não são protegidas contra interferência de outros threads. Elas podem ser mais rápidas, uma vez que não incorrem na sobrecarga de bloquear outros threads. Use essas funções somente em contextos de thread-safe, como aplicativos single-threaded ou onde o escopo de chamada já manipula o isolamento do thread.
Mapeamentos da rotina de texto genérico
Rotina TCHAR.H |
_UNICODE & _MBCS não definido |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_ungettch |
_ungetch |
_ungetch |
_ungetwch |
_ungettch_nolock |
_ungetch_nolock |
_ungetch_nolock |
_ungetwch_nolock |
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
_ungetch, _ungetch_nolock |
<conio.h> |
_ungetwch, _ungetwch_nolock |
<conio.h> ou <wchar.h> |
Para informações adicionais de compatibilidade, consulte Compatibilidade.
Exemplo
// 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 );
}