Compartilhar via


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

Consulte também

Referência

Console e E/S de porta

_cscanf, _cscanf_l, _cwscanf, _cwscanf_l

_getch, _getwch