C ++ ungetc () - C ++ - vakiokirjasto

C ++: n toiminto ungetc () työntää aiemmin luetun merkin takaisin streamiin, jotta se voidaan lukea uudelleen.

Toiminto ungetc () määritetään otsikkotiedostossa.

ungetc () -prototyyppi

 int ungetc (int ch, FILE * -virta);

Toiminto ungetc () työntää merkin ch takaisin tiedostovirtaan liittyvään puskuriin, ellei ch ole yhtä suuri kuin EOF. Jos ch on yhtä suuri kuin EOF, operaatio epäonnistuu eikä streamissa tapahdu muutoksia.

Kutsu ungetc: lle () voi epäonnistua, jos sitä kutsutaan useammin kuin kerran ilman keskellä olevaa luku- tai uudelleensijoittamistoimintoa.

Jos kutsu ungetc: lle () onnistuu, tiedoston tilan loppuilmoitus poistetaan.

Binaarivirroissa onnistunut kutsu ungetc vähentää virran sijainnin ilmaisinta yhdellä. Jos virta-asennon ilmaisin on nolla, käyttäytyminen on määrittelemätöntä.

Tekstivirralle onnistunut kutsu lopettaa muuttamaan virta-aseman osoitinta määrittelemättömällä tavalla. Mutta on taattu, että kun kaikki palautetut merkit on haettu lukutoiminnolla, virta-asennon ilmaisin on yhtä suuri kuin arvo ennen ungetc: n () kutsumista.

ungetc () -parametrit

  • ch: Hahmo, joka työnnetään taaksepäin.
  • stream: Tiedostovirta, jossa merkki työnnetään taaksepäin.

ungetc () Palautusarvo

  • Menestyksessä ungetc () -funktio palauttaa merkin ch.
  • EOF palautuu epäonnistumisen yhteydessä muuttamatta virtaa.

Esimerkki: Kuinka ungetc () -toiminto toimii?

 #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; )

Kun suoritat ohjelmaa, mahdollinen tulos on:

 Arvo = 101

Mielenkiintoisia artikkeleita...