C ++ ungetc () - standardní knihovna C ++

Funkce ungetc () v C ++ posune dříve načtený znak zpět do streamu, aby jej bylo možné znovu načíst.

Funkce ungetc () je definována v hlavičkovém souboru.

ungetc () prototyp

 int ungetc (int ch, FILE * stream);

Funkce ungetc () posune znak ch zpět do vyrovnávací paměti přidružené k proudu souboru, pokud ch není rovno EOF. Pokud ch je rovno EOF, operace selže a nedojde k žádné změně v proudu.

Volání funkce ungetc () může selhat, pokud je volána více než jednou bez jakékoli operace čtení nebo přemístění uprostřed.

Pokud je volání funkce ungetc () úspěšné, konec příznaku stavu souboru se vymaže.

U binárních proudů úspěšné volání ungetc sníží indikátor polohy proudu o jednu. Pokud je indikátor polohy proudu nulový, chování je neurčité.

U textového streamu úspěšné volání ungetc upraví indikátor polohy streamu neurčeným způsobem. Je však zaručeno, že po načtení všech znaků, které byly vráceny pomocí operace čtení, se indikátor polohy streamu rovná jeho hodnotě před voláním ungetc ().

ungetc () parametry

  • ch: Postava, která má být odsunuta.
  • stream: Stream souboru, kde je znak posunut zpět.

ungetc () Návratová hodnota

  • Při úspěchu vrátí funkce ungetc () znak ch.
  • Při selhání se vrátí EOF bez změny proudu.

Příklad: Jak funguje funkce ungetc ()?

 #include #include #include using namespace std; int main() ( int c; long value = 0; char str() = "101axc"; FILE *fp = fopen("file.txt", "r+"); fputs(str,fp); rewind(fp); while(1) ( c = fgetc(fp); if (isdigit(c)) value = value*10 + c - '0'; else break; ) ungetc(c, fp); cout << "Value = " << value << endl; fclose(fp); return 0; )

Při spuštění programu bude možný výstup:

 Hodnota = 101

Zajímavé články...