_ungetch
, _ungetwch
, , _ungetch_nolock
_ungetwch_nolock
Vrátí poslední znak, který se přečte z konzoly.
Důležité
Toto rozhraní API nelze použít v aplikacích, které se spouští v prostředí Windows Runtime. Další informace najdete v tématu Funkce CRT, které nejsou v aplikacích Univerzální platforma Windows podporované.
Syntaxe
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, který se má nasdílit.
Vrácená hodnota
Obě funkce vrátí znak c
v případě úspěchu. Pokud dojde k chybě, _ungetch
vrátí hodnotu EOF
a _ungetwch
vrátí hodnotu WEOF
.
Poznámky
Tyto funkce nasdílí znak c
zpět do konzoly, což způsobíc
, _getch
že další znak přečte nebo _getche
(nebo _getwch
nebo)._getwche
_ungetch
a _ungetwch
pokud se volají více než jednou před dalším čtením, dojde k chybě. Argument c
nemusí být EOF
(nebo 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. Můžou být rychlejší, protože neúčtují režijní náklady na uzamčení dalších vláken. Tyto funkce používejte pouze v kontextech bezpečných pro přístup z více vláken, jako jsou aplikace s jedním vláknem, nebo v případě, že volající obor již zpracovává izolaci vláken.
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.
Mapování rutin obecného textu
Rutina TCHAR.H | _UNICODE a _MBCS není definován |
_MBCS definovaný |
_UNICODE definovaný |
---|---|---|---|
_ungettch |
_ungetch |
_ungetch |
_ungetwch |
_ungettch_nolock |
_ungetch_nolock |
_ungetch_nolock |
_ungetwch_nolock |
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
_ungetch , _ungetch_nolock |
<conio.h> |
_ungetwch , _ungetwch_nolock |
<conio.h> nebo <wchar.h> |
Další informace o kompatibilitě najdete 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 );
}
Whitetoken = White
Viz také
Vstupně-výstupní operace konzoly a portu
_cscanf
, _cscanf_l
, , _cwscanf
_cwscanf_l
_getch
, _getwch