C ++ ungetc () - Biblioteca standard C ++

Funcția ungetc () din C ++ împinge caracterul citit anterior înapoi în flux, astfel încât să poată fi citit din nou.

Funcția ungetc () este definită în fișierul antet.

ungetc () prototip

 int ungetc (int ch, FILE * stream);

Funcția ungetc () împinge caracterul ch înapoi în memoria tampon asociată cu fluxul de fișiere, cu excepția cazului în care ch este egal cu EOF. Dacă ch este egal cu EOF, operația eșuează și nu există nicio modificare în flux.

Apelurile către ungetc () pot eșua dacă sunt apelate de mai multe ori fără nicio operație de citire sau repoziționare în mijloc.

În cazul în care un apel către ungetc () are succes, semnul de finalizare a stării fișierului este șters.

Pentru fluxurile binare, un apel reușit către ungetc scade indicatorul de poziție a fluxului cu unul. Dacă indicatorul poziției fluxului este zero, comportamentul este nedeterminat.

Pentru fluxul de text, un apel reușit către ungetc modifică indicatorul poziției fluxului într-o manieră nespecificată. Dar este garantat că după ce toate caracterele împinse înapoi sunt recuperate cu o operație de citire, indicatorul poziției fluxului este egal cu valoarea sa înainte de a apela ungetc ().

ungetc () Parametri

  • ch: Personajul care trebuie împins înapoi.
  • flux: flux de fișiere în care caracterul este împins înapoi.

ungetc () Valoare returnată

  • La succes, funcția ungetc () returnează caracterul ch.
  • La eșec EOF este returnat fără a schimba fluxul.

Exemplu: Cum funcționează funcția 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; )

Când rulați programul, o posibilă ieșire va fi:

 Valoare = 101

Articole interesante...