Sdílet prostřednictvím


_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 Definovány _UNICODE Definovány
_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