Sdílet prostřednictvím


ungetc ungetwc

Tlačí znak zpět do datového proudu.

int ungetc(
   int c,
   FILE *stream 
);
wint_t ungetwc(
   wint_t c,
   FILE *stream 
);

Parametry

  • c
    Znak doručoval.

  • stream
    Ukazatel na FILE struktury.

Vrácená hodnota

Pokud úspěšný, každá z těchto funkcí vrátí znak argument c*.* Pokud c nemůže být posunuto zpět nebo pokud byla přečtena žádný znak, vstupního datového proudu se nemění a ungetc vrátí EOF; ungetwcreturns WEOF.Pokud stream je NULL, je vyvolána obslužná rutina neplatný parametr, jak je popsáno v Ověření parametrů.Je-li pokračovat, je povoleno zpracování EOF nebo WEOF je vrácena a errno je nastavena na EINVAL.

Informace o těchto a dalších kódů chyb naleznete v tématu _doserrno, kód chyby, _sys_errlist a _sys_nerr.

Poznámky

ungetc Funkce tlačí znak c na stream a vymaže indikátor konce souboru.Datový proud musí být otevřen pro čtení.Následné operace čtení na stream začíná c*.* Pokus o push EOF do datového proudu pomocí ungetc je ignorována.

Znaky umístěné v datovém proudu pomocí ungetc může být vymazány, pokud fflush, fseek, fsetpos, nebo rewind je volána před znak je čtení z datového proudu.Indikátor pozice v souboru bude mít hodnotu, který byl před znaky bylo posunuto.Externí úložiště odpovídající datový proud je beze změny.Úspěšné ungetc volání proti toku textu, indikátor pozice v souboru nespecifikované dokud všechny naformátované či čtení znaků posune zpět.Na každém úspěšném ungetc volání proti binární datový proud indikátoru pozice v souboru je snížena; Pokud byla jeho hodnota 0 před voláním, hodnotu undefined po volání.

Výsledky mohou být nepředvídatelné Pokud ungetc je volána dvakrát bez čtení nebo umístění souboru operace mezi dvěma voláními.Po volání fscanf, volání ungetc může selhat, pokud jiné operace čtení (jako je například getc) byla provedena.Důvodem je, že fscanf sama volá ungetc.

ungetwcje verzí širokého znaku ungetc.U každého však úspěšné ungetwc volání proti proudu text nebo binární, hodnota indikátoru pozice v souboru nespecifikované dokud naformátované či číst všechny znaky posunuto zpět.

Tyto funkce jsou vláknově bezpečné a zamkněte citlivá data během spuštění.Verze bez uzamčení, viz _ungetc_nolock _ungetwc_nolock.

Mapování rutiny obecného textu

TCHAR.Byla zahájena rutina h

_UNICODE & _MBCS není definováno

_MBCS, definice

_UNICODE definována

_ungettc

ungetc

ungetc

ungetwc

Požadavky

Byla zahájena rutina

Požadované záhlaví

ungetc

<stdio.h>

ungetwc

<stdio.h> nebo <wchar.h>

V konzole není podporována v Windows Store apps.Úchyty standardní datový proud přidružené konzoly, stdin, stdout, a stderr, musí být přesměrována před C run-time funkce lze využít v Windows Store apps.Další informace o kompatibilitě, viz Compatibility v úvodu.

Příklad

// crt_ungetc.c
// This program first converts a character
// representation of an unsigned integer to an integer. If
// the program encounters a character that is not a digit,
// the program uses ungetc to replace it in the  stream.
//

#include <stdio.h>
#include <ctype.h>

int main( void )
{
   int ch;
   int result = 0;

   // Read in and convert number:
   while( ((ch = getchar()) != EOF) && isdigit( ch ) )
      result = result * 10 + ch - '0';    // Use digit.
   if( ch != EOF )
      ungetc( ch, stdin );                // Put nondigit back.
   printf( "Number = %d\nNext character in stream = '%c'", 
            result, getchar() );
}
  

Ekvivalent v rozhraní .NET Framework

Nelze použít Volání funkce standardním C pomocí PInvoke. Další informace naleznete v tématu Platformu vyvolání příklady.

Viz také

Referenční dokumentace

Proud I/O

getc getwc

putc putwc