_ungetch, _ungetwch, _ungetch_nolock, _ungetwch_nolock
Rimanda indietro l'ultimo carattere letto dalla console.
Importante
Questa API non può essere utilizzata nelle applicazioni che vengono eseguite in Windows Runtime.Per ulteriori informazioni, vedere Funzioni CRT non supportate con /ZW.
int _ungetch(
int c
);
wint_t _ungetwch(
wint_t c
);
int _ungetch_nolock(
int c
);
wint_t _ungetwch_nolock(
wint_t c
);
Parametri
- c
Carattere da premere.
Valore restituito
Entrambe le funzioni restituiscono il carattere c se si riesce. Se è presente un errore, _ungetch restituisce un valore EOF e _ungetwchrestituisceWEOF.
Note
Queste funzioni indirizzano il carattere c indietro alla console, in modo che c sia il successivo carattere letto da _getch o _getche (o_getwch o_getwche). _ungetch e _ungetwch hanno esito negativo se vengono chiamati più volte prima della successiva lettura. L'argomento c non può essere EOF (o WEOF).
Le versioni con il suffisso _nolock sono identiche ma non sono protette da interferenze da parte di altri thread. Potrebbero essere più veloci poiché non comportano un sovraccarico che blocca le altre thread. Utilizzare queste funzioni solo in contesti thread-safe come applicazioni a thread singolo o dove l'ambito chiamante già gestisce l'isolamento del thread.
Mapping di routine su testo generico
Routine TCHAR.H |
_UNICODE & _MBCS non definiti |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_ungettch |
_ungetch |
_ungetch |
_ungetwch |
_ungettch_nolock |
_ungetch_nolock |
_ungetch_nolock |
_ungetwch_nolock |
Requisiti
Routine |
Intestazione obbligatoria |
---|---|
_ungetch, _ungetch_nolock |
<conio.h> |
_ungetwch, _ungetwch_nolock |
<conio.h> o <wchar.h> |
Per ulteriori informazioni sulla compatibilità, vedere Compatibilità.
Esempio
// 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 );
}