_ungetch, _ungetwch, _ungetch_nolock, _ungetwch_nolock
Posune zpět poslední znak, který přečten z konzoly.
Důležité |
---|
Toto API nelze použít v aplikacích, které jsou spuštěny v modulu Windows Runtime.Další informace naleznete v tématu CRT funkce nejsou podporovány s /ZW. |
int _ungetch(
int c
);
wint_t _ungetwch(
wint_t c
);
int _ungetch_nolock(
int c
);
wint_t _ungetwch_nolock(
wint_t c
);
Parametry
- c
Znak k posunutí.
Vrácená hodnota
Obě funkce vrátí znak c v případě úspěchu.Pokud došlo k chybě, _ungetch vrátí hodnotu EOF a _ungetwchvrátíWEOF.
Poznámky
Tyto funkce vrátí znak c zpět do konzoly, což způsobí, že c bude další znak přečtený _getch nebo _getche (nebo_getwch nebo_getwche)._ungetch a _ungetwch se nezdaří, pokud jsou volány více než jednou před dalším čtením.Argument c nesmí být EOF (ani WEOF).
Verze s příponou _nolock jsou shodné s tím rozdílem, že nejsou chráněny před rušením jinými vlákny.Mohou být rychlejší, neboť nepřidávají režii uzamykáním ostatních vláken.Tyto funkce používejte pouze v kontextech bezpečných na vlákna, jako jsou aplikace s jedním vláknem nebo pokud volající obor již zpracovává izolaci vláken.
Rutinní mapování obecného textu
Rutina TCHAR.H |
_UNICODE & _MBCS není definováno |
_MBCS definováno |
_UNICODE definováno |
---|---|---|---|
_ungettch |
_ungetch |
_ungetch |
_ungetwch |
_ungettch_nolock |
_ungetch_nolock |
_ungetch_nolock |
_ungetwch_nolock |
Požadavky
Rutina |
Požadované záhlaví |
---|---|
_ungetch, _ungetch_nolock |
<conio.h> |
_ungetwch, _ungetwch_nolock |
<conio.h> nebo <wchar.h> |
Další informace o kompatibilitě naleznete v tématu Kompatibilita.
Příklad
// 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 );
}