C ++ ungetc () - C ++ Standard Library

A C ++ ungetc () függvénye az előzőleg olvasott karaktert visszaszorítja az adatfolyamba, hogy újra olvasható legyen.

Az ungetc () függvény a fejlécfájlban van meghatározva.

ungetc () prototípus

 int ungetc (int ch, FILE * folyam);

Az ungetc () függvény visszaszorítja a ch karaktert a fájlfolyamhoz társított pufferbe, hacsak a ch nem egyenlő az EOF-rel. Ha ch egyenlő az EOF-rel, akkor a művelet meghiúsul, és az adatfolyamban nincs változás.

A ungetc () hívása sikertelen lehet, ha többször hívják meg, anélkül, hogy bármilyen olvasási vagy áthelyezési művelet lenne a közepén.

Ha az ungetc () hívás sikeres, a fájl állapotának jelző feof törlődik.

Bináris folyamok esetén az ungetc sikeres lehívása eggyel csökkenti a folyam helyzetjelzőjét. Ha az adatfolyam pozíció mutatója nulla, akkor a viselkedés határozatlan.

Szöveges adatfolyam esetén a sikeres ungetc hívás meghatározatlan módon módosítja az adatfolyam helyzetjelzőt. De garantált, hogy miután az összes visszalépett karakter beolvasásra került egy olvasási művelettel, az adatfolyam-helyzetjelző megegyezik az ungetc () meghívása előtti értékkel.

ungetc () Paraméterek

  • ch: A tolandó karakter.
  • stream: Fájlfolyam, ahol a karaktert visszalökik.

ungetc () Visszatérési érték

  • Siker esetén az ungetc () függvény visszaadja a ch karaktert.
  • Meghibásodás esetén az EOF a stream megváltoztatása nélkül kerül visszaadásra.

Példa: Hogyan működik az ungetc () függvény?

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

A program futtatásakor egy lehetséges kimenet lesz:

 Érték = 101

érdekes cikkek...